题
我一直在学习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
}
}
不隶属于 StackOverflow