Преобразование GameObject - PullRequest
       22

Преобразование GameObject

1 голос
/ 03 апреля 2011

Я пытаюсь переместить Объект в Куб, который хранится в Массиве.

Массив заполнен игровыми объектами с тегом.

Я могу заставить Объект мгновенно двигаться к кубу, но не так медленно, как он идет к нему.

Это мой сценарий:

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 тоже не получается :( Есть идеи, как заставить это работать?

Помощь очень ценится :) Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Похоже, что вы делаете все преобразования в одном кадре.Вам нужно выбрать скорость и применить ее к объекту для каждого кадра.Вы знаете, от и до.Укажите, сколько времени вы хотите, чтобы он занимал, и обновляйте его постепенно.Помните, что вы не можете быть уверены, что будет 60 кадров в секунду, так что учтите это.

0 голосов
/ 28 мая 2011

Вы можете использовать Vector3.MoveTowards

Для maxDistanceDelta вы выбираете скорость и умножаете ее на Time.deltaTime, чтобы она не зависела от длины кадра:

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