Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

109
Vistas
¿Cómo evitar que rebote en la pared cuando se mueve contra ella?

Mi problema es que cuando me muevo contra una pared, hay un pequeño efecto de rebote. Aquí hay un video de ello: https://www.dropbox.com/s/t5drxu4aw60nq59/meem.mp4?dl=0

No sé cómo solucionarlo, ya probé todo. Espero que alguien sepa una solución para esto. Gracias Aquí está el guión del movimiento:

 public class PlayerMovement : MonoBehaviour { public float speed; public float x; public float y; public bool canMove; void FixedUpdate() { if (canMove) { if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W)) { GoUp(); } else if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S)) { GoDown(); } else if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D)) { GoRight(); } else if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A)) { GoLeft(); } if (Input.GetKey(KeyCode.UpArrow) && Input.GetKey(KeyCode.RightArrow)) { GoUp(); GoRight(); } else if (Input.GetKey(KeyCode.UpArrow) && Input.GetKey(KeyCode.LeftArrow)) { GoUp(); GoLeft(); } else if (Input.GetKey(KeyCode.DownArrow) && Input.GetKey(KeyCode.RightArrow)) { GoDown(); GoRight(); } else if (Input.GetKey(KeyCode.DownArrow) && Input.GetKey(KeyCode.LeftArrow)) { GoDown(); GoLeft(); } this.transform.position = new Vector2(this.transform.position.x + x, this.transform.position.y + y); x = 0; y = 0; } } public void GoUp() { y = Time.deltaTime * speed; } public void GoDown() { y = Time.deltaTime * (-speed); } public void GoRight() { x = Time.deltaTime * speed; } public void GoLeft() { x = Time.deltaTime * (-speed); } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Encuentre dos sugerencias para manejar el ejemplo de dejar de ir bien. Tenga en cuenta que no serán código depurado, ya que no conozco los detalles de su proyecto. Tampoco es el más correcto en muchos aspectos por la misma razón. Solo para darte una idea.

1.- Con control a distancia

 public GameObject wall; //ref to wall set in editor float playerHalfSize = 0f; float wallHalfSize = 0f; float bodiesTotDist = 0f; Start() { playerHalfSize = transform.scale.x / 2; wallHalfSize = wall.scale.x / 2; // supposing size is set with scale. Preferably get the size with a collider or the mesh renderer Bounds class inside the respective collider or MeshRenderer classes bodiesTotDist = playerHalfSize + wallHalfSize; } float getDistanceToWall(wall) { float distance = Vector3.Distance(transform.position, wall.transform.position) - bodiesTotDist; } public void GoRight() { if (getDistanceToWall() > 0) //this avoids your player x move further to the right x = Time.deltaTime * speed; }

Si aún puede ver el rebote, puede intentar ajustar manualmente una distancia de umbral, por ejemplo, getDistanceToWall() > 0.5f o adjuntar el colisionador.

2.- Con un gatillo: Si pones un gatillo un poco más grande que tu pared, cuando la pared toque al jugador puedes manejarlo en el código también para evitar que se x más a la derecha.

 bool isRightWallTouching = false; void OnTriggerEnter2D(Collider2D col) { if (col.gameObject == wall) //for the right wall isRightWallTouching = true; } void OnTriggerExit2D(Collider2D other) { isRightWallTouching = false; } public void GoRight() { if (isRightWallTouching > 0) //this avoids your player x move further to the right x = Time.deltaTime * speed; }

Como se dijo, el código no está depurado, por lo que podría tener algunas fallas y la posibilidad de que tenga muchas paredes, por lo que esta sugerencia puede conducir a una gran cantidad de soluciones sucias, pero espero que pueda brindarle algo de inspiración para poner su juego a trabajar y moverse. sobre :)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda