我一直在学习Unity 3D,慢慢地。我正在尝试制作迷宫,并在到达完成区域时需要发生一个事件。

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

谢谢你的帮助!

有帮助吗?

解决方案

如果可以将最终区域视为盒子,则可以在整个面积周围的场景中添加一个弹盘器,并设置 isTrigger 属性为真。然后,您将获得回调 OnTriggerEnter 在您的实体进入该区域时,您可以随后使用该区域来结束级别或其他等级。

其他提示

作为彼得·G 统一答案的国家:

如果您有僵化的体,则可以做刚体。

如果您使用的是字符控制器,请检查以查看farnecontroller.velocity == vector3.zero;

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

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

好吧,如果您按目标区域划分,则指结束区域,那么您可以通过几种方式进行此操作

您可以使用碰撞

以简单的方式:(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 

    }

    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top