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が、キューブから遠く離れてテレポートします。

そして、それを変換配列に変換するだけではうまくいきません:(これを機能させるためのアイデアはありますか?

助けていただければ幸いです:) よろしくお願いします!

4

2 に答える 2

1

1 つのフレームで全体の変換を行っているように見えます。速度を選択し、フレームごとにオブジェクトに適用する必要があります。あなたはfromとtoを知っています。必要な時間を選択し、段階的に更新します。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 に答える