2016-11-08 10 views
1

Я работаю над игровым приложением с Unity. У меня проблема, когда нужно переместить GameObject.Перемещение объекта с помощью vector3.MoveToward

В моей игре, когда игрок пойло с его устройством, то GameObject перемещается из точки А в точку Б, и когда он пойло вниз, он идет от В к А.

Я написал C# скрипт с логика игры, но у меня есть проблема, когда дело доходит до этого.

Проблема заключается в том, что GameObject перемещается мгновенно от А до В.

Вот строки кода я использую, чтобы переместить мой GameObject:

transform.localPosition = Vector3.MoveTowards (PositionA,PositionB,Time.deltaTime * speed); 

speed является поплавок со значением 10.0f ,

Я бы хотел, чтобы мой GameObject медленно перемещался в точку от А до Б. И, несмотря на изменения значения скорости, ничего не меняется, он все равно перемещается мгновенно.

Как это исправить? (Я пробовал с Vector3.Lerp, и у меня были те же результаты).

ответ

3

Vector3.MoveTowards принимает текущее положение, целевое положение и шаг, но кажется, что ваш первый аргумент здесь является началом перемещения, а не текущей позицией. Как правило, вы бы это сделать что-то вроде этого, в вашем Update():

transform.localPosition = Vector3.MoveTowards (transform.localPosition, PositionB, Time.deltaTime * speed);

с текущей позиции в качестве первого аргумента.

+0

, когда я писал свою линию, он плавно движется сначала и затем немедленно перейти в положение B (при 50% от расстояния). Кроме того, когда я прокручиваю вниз, он не хочет возвращаться к точке A. –

+0

@ Ophélia Hm? У меня нет Unity, поэтому я не могу тестировать прямо сейчас, но он должен работать. Вы меняете положение трансформации где-то в другом месте или что-то еще? И для перехода к A вам придется изменить, к какой цели он движется. – Koneke

+1

он работает сейчас! :) спасибо большое :) –

4

Вот как использовать MoveTowards:

void Update() 
{ 
    float step = speed * Time.deltaTime; 
    transform.position = Vector3.MoveTowards(transform.position, PositionB, step); 
} 

LearnMore

+0

большое спасибо! :) по-твоему, он тоже работает :) –