转换GameObject

时间:2011-04-02 21:51:50

标签: unity3d transform unityscript gameobject

我正在尝试将对象移动到存储在数组中的多维数据集。

Array中填充了带有标记的gameObjects。

我可以让物体立即移动到立方体,但不能慢慢地走向它。

这是我的剧本:

var moveTo : GameObject;

function Update(){
    print(FindClosestEnemy().name);
}

function FindClosestEnemy():GameObject{

    var chasePoints : GameObject[];
    chasePoints = GameObject.FindGameObjectsWithTag("chasePoint");
    var closest : GameObject;
    var distance = Mathf.Infinity;
    var position = transform.position;

    for(var go: GameObject in chasePoints){
        var diff = (go.transform.position-position);
        var curDistance = diff.sqrMagnitude;
        if(curDistance < distance){
            closest = go;
            moveTo = closest;
            transform.position -= moveTo.transform.position;
            distance = curDistance;
        }
    }
    return closest; 
}

我也尝试了Time.deltaTime这个东西,但它传送的远离立方体。

只是将它转换为变换数组也没有解决:(任何想法使这个工作?

非常感谢帮助:)提前致谢!

2 个答案:

答案 0 :(得分:1)

看起来你正在一帧中进行整个转换。您需要选择一个速度并将其应用于每个帧的对象。你知道从哪里来的。选择您想要的时间并逐步更新。请记住,您无法确定每秒会有60帧,因此请将其考虑在内。

答案 1 :(得分:0)

你可以使用 Vector3.MoveTowards

对于maxDistanceDelta,您可以选择一个速度并将其与Time.deltaTime相乘,使其与帧长度无关:

Vector3.MoveTowards(transform.position, moveTo.transform.position, speed * Time.deltaTime);