这是我的相机代码:
using UnityEngine;
public class followcamara : MonoBehaviour {
// Update is called once per frame
public Transform player;
public Vector3 offset;
void Update ()
{
//debug.log(player.position); imprime la posicion del jugador.
// transform.position = player.position; // si solo dejamos esta porcion de codigo,
//la camara se pusiera en el jugador en 1ra persona, pero como la camara en este juegos la queremos en 3ra
//persona, le agregaremos lo siguiente.
transform.position = player.position + offset;// asi la camara se centra y se modifica a las coordenadas
//que le pongamos.
}
}
这是我放在检查员身上的偏移值:0.1,2,-5
我收到了很多错误,但这些是前三个:
当我在某个旋转的道路边缘玩耍时会发生这种情况,就像这样,但是在路边。所以,当它发生时,你只是消失了,而且我给了我很多错误。我该如何解决这些问题?我是团结的新人。
玩家变换坐标将值更改为na,na,na
运动的代码是
using UnityEngine;
public class playermovement : MonoBehaviour {
public Rigidbody rb;
public float fowardforce = 2000f;
public float sidewaysforce = 500f;
private bool isdeath = false;
// Update is called once per frame
void FixedUpdate ()
//esta parte de aqui se utiliza para generar una accion a (frames*segundo),
//entonces si tu computadora e srapida los Frames seran mayores, por eso agregamos el time.deltatime.
//que es la cantidad de segundos que la computadora genero el ultimo frame, eje: si la funcion update,
//ejecuta un frame 10 veces por vez, el time.deltatime va a ser 0.1, si es 20 por segundo su valor ahora es 0.5,
//este forze hace que las fisicas se ejecuten al mismo tiempo en cada computador estimadamente, sin importar,
//su capacidad.
{
rb.AddForce(0, 0, fowardforce * Time.deltaTime);
//input.getkey("tecla") se utiliza para analizar el teclado y ver que tecla se esta pulsando
if(Input.GetKey("right"))
{
rb.AddForce(sidewaysforce * Time.deltaTime, 0, 0,ForceMode.VelocityChange); //x,y,z,cuarto parametro modo fuerza, leelos los diferentes.
}
if(Input.GetKey("left"))
{
rb.AddForce(-sidewaysforce * Time.deltaTime, 0, 0,ForceMode.VelocityChange);
}
if (Input.GetKey("up"))
{
rb.AddForce(0, 25, 0);
}
if(rb.position.y < -1f)
{
// FindObjectOfType<gameManager>().end_game();
// FindObjectOfType<gameManager>().EndGameModoInfinito();
death();
FindObjectOfType<score>().OnDeath();
}
if (Input.GetMouseButton(0)) //lee cualquier pulso sin importar la posicion, sirve para mouse y pantallas touch
{
if (Input.mousePosition.x > Screen.width / 2) // si la posicion del mouse esta en el eje x, es decir a la derecha
{
rb.AddForce(sidewaysforce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
else
{
rb.AddForce(-sidewaysforce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
//obviamente esta a la izquierda si no es asi
}
}
}
答案 0 :(得分:0)
我会检查你遇到的第一个例外(无效的worldAABB:对象太大或太远...... )。当物体离场景中心太远时,通常会产生这种情况,通常在某个轴上为5000+单位。这导致近似无穷大,即NaN
。你能检查玩家的位置,看看你是否处于这种状况?如果我的想法是正确的,那么您正在向NaN
添加偏移量(有限),从而获得结果NaN
。
编辑:似乎您的代码与here相同。您是否尝试过相同的建议,因此缩放地面的Z分量?
答案 1 :(得分:0)
几分钟前,我遇到了Input.mousePosition是{Nan,Nan,Nan}的错误。问题的原因是,在将mousePosition分配给其他gameObject之前,我先将鼠标的位置对齐并划分为四舍五入,然后将其位置对齐到可变大小的网格中。在最近的更改中,有时将大小设置为零,这会导致“被零除”错误。