Cómo detener un objeto de juego después de llegar a una determinada posición
– UnityAssets3Free
hola , por aqui Daniel y para hoy os traigo
esta nueva pregunta
Estoy tratando de descubrir cómo hacer que mi jugador se detenga cuando llega a una determinada posición, pero nada parece funcionar. Lo que quiero es que cuando el objeto del juego alcance una determinada posición, el objeto del juego deje de moverse abruptamente. Estoy agregando fuerza a RigidBody2d para que el objeto del juego se mueva y se encoja uniformemente, pero quiero que se detenga cuando llegue a cierta posición. Estoy tratando de hacer esto como una restricción de límite. También intenté usar solo Collider2D como umbral, pero aún así el objeto del juego simplemente se mueve hacia la derecha y Collider2D no se configuró como disparador. Esto es para un juego móvil, así que estoy usando la pantalla táctil.
Esto es lo que tengo.
private void Update()
MovePlayer();
private void MovePlayer()
{
if (Touchscreen.current.primaryTouch.press.isPressed)
Vector2 touchPosition = Touchscreen.current.primaryTouch.position.ReadValue();
Vector3 worldPosition = mainCamera.ScreenToWorldPoint(touchPosition);
moveDirection = worldPosition - transform.position;
moveDirection.z = 0f;
moveDirection.Normalize();
else
moveDirection = Vector3.zero;
private void FixedUpdate()
if (moveDirection == Vector3.zero) return;
rb.AddForce(moveDirection * movementForce * Time.deltaTime, ForceMode2D.Force);
rb.velocity = Vector3.ClampMagnitude(rb.velocity, velocity);
if (transform.position.y >= 4f)
rb.velocity = Vector2.zero;
1 respuesta 1
Creo que uno de los problemas podría ser el
if (moveDirection == Vector3.zero) return;
por lo tanto, si no hay una entrada del usuario, nunca llegará a la verificación de posición.
Debes tratarlos por separado.
private void FixedUpdate()
var position = rb.position;
if (position.y >= 4f)
rb.velocity = Vector2.zero;
position.y = 4f;
rb.position = position;
if (moveDirection == Vector3.zero) return;
rb.AddForce(moveDirection * movementForce * Time.deltaTime, ForceMode2D.Force);
rb.velocity = Vector3.ClampMagnitude(rb.velocity, velocity);
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
eso es todo,hasta la proxima