2011-04-02 71 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);