En este momento estás viendo ¿Cómo hago movimientos de Rigidbody en un shooter en primera persona en Unity?

 – Unity

¿Cómo hago movimientos de Rigidbody en un shooter en primera persona en Unity? – Unity

¿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:

https://pastebin.com/6g7j8G6v

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

Deja una respuesta