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!

¿Fue útil?

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 

    }

    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top