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

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

Así que estoy creando un juego FPS en Unity, y solía usar transform.translate para el movimiento, pero eso le permite al jugador moverse a través de las paredes si se mueve lo suficientemente rápido (movimiento diagonal) y ni siquiera importa 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, independientemente de la rotación. Además, W y S se mueven hacia arriba y hacia abajo en lugar de hacia adelante y hacia atrás.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Le sugiero que consulte https://learn.unity.com/tutorial/environment-and-player?projectId=5c51479fedbc2a001fd5bb9f#5c7f8529edbc2a002053b786 documentación oficial de la unidad

 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 muestra bastante sencillo sobre cómo hacerlo, tenga en cuenta que esta solución aún necesita normalizar el movimiento vectorial, y para eso, haga esto:

 rb.AddForce (movement.normalized * speed);
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