确定Unity 3D中的对象位置

时间:2010-04-26 23:44:50

标签: unity3d gameobject

我一直在慢慢地学习Unity 3D。我正在尝试制造一个迷宫,当它们到达终点区域时需要一个事件。

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

如果您的结束区域可以被视为一个框,您可以将BoxCollider添加到完成区域周围的场景中,并将其isTrigger属性设置为true。然后,当您的实体进入该区域时,您将获得对其OnTriggerEnter的回调,您可以随后使用该回调结束该级别或其他任何内容。

答案 1 :(得分:2)

彼得G states on Unity Answers

  

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

     

如果您正在使用角色控制器,那么检查是否   CharacterController.velocity == Vector3.zero;

     

或者,您可以在记住该帧的每一帧上手动保存Vector3   最后的位置。类似的东西:

function Update () {
 curPos = position;
 if(curPos == lastPos) {
     print("Not moving");
 }
 lastPos = curPos;
}

答案 2 :(得分:0)

如果您按目标区域表示完成区域那么 你可以用几种方式做到这一点

你可以使用碰撞

以一种简单的方式: (1)创建一个平面,创建一个名为“finish”的标签 (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 

    }

    }