La détermination de l'emplacement de l'objet dans Unity 3D
-
01-10-2019 - |
Question
J'ai appris Unity 3D, lentement. Je suis en train de faire un labyrinthe, et ont besoin d'un événement de se produire quand ils atteignent la zone d'arrivée.
Comment récupérer l'emplacement de l'objet et vérifier si elle est dans la zone cible? L'utilisation de JavaScript.
Merci pour toute aide!
La solution
Si votre zone d'extrémité peut être traitée comme une boîte, vous pouvez ajouter un BoxCollider à votre scène autour de la zone d'arrivée et définissez sa propriété isTrigger
true. Ensuite, vous aurez un rappel à OnTriggerEnter
sur votre entité lorsqu'elle pénètre dans la zone, que vous pouvez ensuite utiliser pour mettre fin à niveau ou autre.
Autres conseils
Peter G états sur les réponses Unity :
Si vous avez un modèle du solide indéformable, alors vous pouvez le faire Rigidbody.IsSleeping () à vérifier si votre dort modèle du solide indéformable
Si vous utilisez un contrôleur de caractères, puis de vérifier pour voir si CharacterController.velocity == Vector3.zero;
Ou, vous pouvez enregistrer manuellement un Vector3 chaque image qui se souvient de la dernière position. Quelque chose comme:
function Update () {
curPos = position;
if(curPos == lastPos) {
print("Not moving");
}
lastPos = curPos;
}
bien si vous par zone cible que vous voulez dire la zone d'arrivée puis vous pouvez le faire de plusieurs façons
vous pouvez utiliser entre en collision
d'une manière simple: (1) créer un plan, créez une balise nommée « finish » (2), puis sélectionnez le lecteur puis cliquez sur le « tag » déroulant dans l'inspecteur. recherche de « finition » et sélectionnez. vous aurez également besoin d'ajouter un collisionneur à votre gameobject.
puis créez un nouveau JavaScript et ajoutez ce code à lui
function OnCollisionEnter(collision : Collision){
if(collision.gameObject.tag == "finish"){
//"STOP GAMEOBJECT FROM MOVING"
}
}
ou utiliser cette méthode
placer ce script sur votre lecteur. ce script est probablement tout aussi dieu que l'utilisation collisionneurs pour ce que vous faites
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
}
}