2

我一直在慢慢学习 Unity 3D。我正在尝试制作迷宫,并且需要在他们到达终点区域时发生事件。

如何获取对象位置并检查它是否在目标区域?使用 Javascript。

谢谢你的帮助!

4

3 回答 3

4

如果您的结束区域可以被视为一个盒子,您可以在结束区域周围的场景中添加一个 BoxCollider 并将其isTrigger属性设置为 true。然后,当您的实体进入该区域时,您将收到一个回调OnTriggerEnter,您可以随后使用它来结束关卡或其他任何事情。

于 2010-04-26T23:56:00.437 回答
2

正如 Peter G在 Unity Answers 上所说

如果你有一个刚体,那么你可以做 Rigidbody.IsSleeping() 来检查你的刚体是否在睡觉

如果您使用的是字符控制器,则检查 CharacterController.velocity == Vector3.zero;

或者,您可以在记住最后位置的每一帧中手动保存一个 Vector3。就像是:

function Update () {
 curPos = position;
 if(curPos == lastPos) {
     print("Not moving");
 }
 lastPos = curPos;
}
于 2011-04-01T05:35:27.420 回答
0

好吧,如果您所说的目标区域是指完成区域,那么您可以通过多种方式做到这一点

你可以使用碰撞

以一种简单的方式:(1)创建一个平面,创建一个名为“完成”的标签(2)然后选择播放器,然后单击检查器中的下拉“标签”。搜索“完成”并选择它。您还需要为您的游戏对象添加一个对撞机。

然后创建一个新的 JavaScript 并将此代码添加到其中

    function OnCollisionEnter(collision : Collision){
    if(collision.gameObject.tag == "finish"){ 

//"STOP GAMEOBJECT FROM MOVING"
}

}

或使用此方法

将此脚本放在您的播放器上。这个脚本可能就像使用对撞机来做你正在做的事情一样神

 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 

    }

    }
于 2013-10-28T21:49:17.740 回答