1

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

数组中填充了带有标签的游戏​​对象。

我可以让对象立即移动到立方体,但不像它走向它那样缓慢。

这是我的脚本:

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东西,但它会传送到远离立方体的地方。

而且只是将其转换为 Transform Array 也无法解决:( 有什么想法可以使它工作吗?

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

4

2 回答 2

1

看起来您正在在一帧中进行整个转换。您需要选择一个速度并将其应用于每一帧的对象。你知道从和到。选择您希望它花费多长时间并逐步更新它。请记住,您不能确定每秒会有 60 帧,因此请考虑到这一点。

于 2011-04-02T22:07:32.070 回答
0

您可以使用 Vector3.MoveTowards

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

Vector3.MoveTowards(transform.position, moveTo.transform.position, speed * Time.deltaTime);
于 2011-05-27T20:30:46.733 回答