La determinación de la localización del objeto en Unity 3D
-
01-10-2019 - |
Pregunta
He estado aprendiendo Unity 3D, lentamente. Estoy tratando de hacer un laberinto, y la necesidad de que se produzca un evento cuando llegan a la zona de meta.
¿Cómo voy a buscar la localización del objeto y comprobar si está en el área de destino? El uso de Javascript.
Gracias por cualquier ayuda!
Solución
Si su zona extrema puede ser tratada como una caja, que podría añadir un BoxCollider a la escena alrededor de la zona de meta y establezca su propiedad isTrigger
true. Entonces obtendrá una devolución de llamada a OnTriggerEnter
en su entidad cuando entra en el área, que se puede utilizar posteriormente para terminar el nivel o lo que sea.
Otros consejos
Como Peter G sobre las respuestas de la unidad de :
Si usted tiene un cuerpo rígido, entonces usted puede hacer Rigidbody.IsSleeping () para comprobar si su cuerpo rígido está durmiendo
Si está utilizando un controlador de caracteres, a continuación, comprobar para ver si CharacterController.velocity == Vector3.zero;
O, puede guardar manualmente un Vector3 cada cuadro que recuerda el Ultima posicion. Algo así como:
function Update () {
curPos = position;
if(curPos == lastPos) {
print("Not moving");
}
lastPos = curPos;
}
Si bien por el área objetivo que quiere decir la zona de meta y luego usted puede hacer esto de varias maneras
Puede utilizar choca
de una manera sencilla: (1) crear un avión, crear una etiqueta llamada "acabado" (2) a continuación, seleccione el jugador a continuación, haga clic en la "etiqueta" desplegable en el inspector. buscar "acabado" y seleccionarlo. También tendrá que añadir un colisionador a su GameObject.
a continuación, crear un nuevo JavaScript y añadir este código a ella
function OnCollisionEnter(collision : Collision){
if(collision.gameObject.tag == "finish"){
//"STOP GAMEOBJECT FROM MOVING"
}
}
o utilizar este método
colocar este script en su reproductor. este guión es probablemente igual a Dios como el uso de los colisionadores de lo que está haciendo
var other : Transform;
function Update ()
{
var dist = Vector3.Distance(other.position, transform.position);
if (dist < 100)
{
//stop player movent here
// move player to exact finish position over time
}
}