Unity Player pasando a través de objetos
– UnityAssets3Free
hola , soy jorge y para hoy os traigo
nueva pregunta curiosa
tanto el jugador como el objeto tienen colisionadores y cuerpos rígidos, el objeto tiene posición y rotación bloqueadas, el jugador solo tiene rotación bloqueada. Cuando el jugador va a los bloques, el jugador atraviesa los bloques, aunque estos ofrecen cierta resistencia. Para mover el jugador estoy configurando el rigidbodyla velocidad de, y haciendo esto en FixedUpdate. No tengo ni idea de por qué está pasando esto, ¿alguna idea?
La parte principal del código es:
rigidBody.velocity = new Vector3(direction.x, rigidBody.velocity.y + (-Gravity * Time.deltaTime), direction.z);
(la dirección está determinada por las teclas WASD y estoy usando mi propia gravedad)
2 respuestas 2
En primer lugar, no necesita multiplicar la velocidad por el tiempo.DeltaTime, ya que está moviendo su objeto en el método FixedUpdate(); Que utiliza intervalos de tiempo fijos ya que el motor de física no funciona sincronizado con el motor de juego normal. Además, ambos objetos no necesitan cuerpos rígidos para chocar entre sí. Sugiero mirar su matriz de colisión en la configuración y verificar que todo lo que necesita colisión esté marcado correctamente. Como otros también han dicho, verifique su cinemática en el rigidbody.
Una última sugerencia para trabajar con tu propia gravedad. No cambie el valor de gravedad real del motor del juego. Se suele recomendar utilizar una variable multiplicadora y aplicarla a la gravedad constante ya definida por el motor de física. Si está editando completamente la gravedad, podría considerar usar un controlador de caracteres.
Creo que tiene algo que ver con lo que la documentación dice «En la mayoría de los casos, no debe modificar la velocidad directamente, ya que esto puede resultar en un comportamiento poco realista».
tratar de usar AgregarFuerza() o funciones similares para cambiar las propiedades del cuerpo rígido. Los colisionadores, etc. funcionarán como se esperaba.
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
por hoy,espero que te halla servido