¿Cómo hago movimientos de Rigidbody en un shooter en primera persona en Unity?
– UnityAssets3Free
hola , me llamo Daniel y hoy os traigo
nueva pregunta
Así que estoy creando un juego FPS en Unity, y solía usar transform.translate para el movimiento, pero esto le permite al jugador moverse a lo largo de las paredes si se mueve lo suficientemente rápido (movimiento diagonal) y sin importar qué tan grande sea el hitbox de la pared. es
Aquí está mi código de controlador de jugador:
Aquí está el código de movimiento:
void FixedUpdate()
myBody.MovePosition(transform.position + (transform.forward *
Time.deltaTime * speed));
void Update()
{
float axisX = Input.GetAxis ("Horizontal");
float axisY = Input.GetAxis ("Vertical");
Más información: Con este código, el jugador ahora se mueve en direcciones muy específicas sin importar la rotación. Además, W y S se mueven hacia arriba y hacia abajo en lugar de hacia adelante y hacia atrás.
1 respuesta 1
te sugiero que hagas la compra https://aprender.unity.com/tutorial/environment-and-player?projectId=5c51479fedbc2a001fd5bb9f#5c7f8529edbc2a002053b786 unity documentación oficial
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
public float speed;
private Rigidbody rb;
void Start ()
rb = GetComponent<Rigidbody>();
void FixedUpdate ()
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);
Tienen un código de ejemplo bastante sencillo sobre cómo hacer esto, tenga en cuenta que esta solución aún necesita normalizar el movimiento del vector y para hacerlo, haga lo siguiente:
rb.AddForce (movement.normalized * speed);
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
sin mas,hasta la proxima