2011-04-02 74 views
1

我想让一个对象移动到一个存储在数组中的多维数据集。变换游戏对象

该数组充满了带有标签的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的事情,但它然后瞬移远离立方体。

而只是将其转换为变换阵列心不是工作了两种:(任何想法,使这项工作?

帮助是非常赞赏:)在此先感谢!

回答

1

看起来你正在一个框架中完成整个转换。您需要选择速度并将其应用于每个帧的对象。你知道从和到。选择你想要多久,并增量更新。请记住,您无法确定每秒会有60帧,因此请考虑这一点。

0

您可以使用 Vector3.MoveTowards

对于maxDistanceDelta你选择一个速度与Time.deltaTime乘以它是帧长的无关性:

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