2016-10-27 4 views
2

Итак, я сделал несколько простых подвижных платформ для своей игры.Unity C# Смещение смещения платформы в Runntime

public float speedX; 
public float speedY; 
public float length; 
public float pause; 

float timer; 
Vector3 move; 

void Start() { 
    timer = 0; 
} 

void Update() 
{ 
    if (timer == 0) 
    { 
     speedX *= -1; 
     speedY *= -1; 
     timer = length; 
    } else 
    { 
     timer--; 
    } 
    if (timer > pause) 
    { 
     move = new Vector3(speedX, speedY, 0); 
     transform.Translate(move * Time.smoothDeltaTime); 
    } 
} 

Когда я играю на сцене, я поместил их в них, они просто отлично. Но когда я играю в игру и добираюсь до этой сцены, платформы все смещены немного в любом направлении, в котором они двигались. У кого-нибудь есть идеи о том, как я могу заставить платформы постоянно двигаться в разных игровых сессиях?

+1

они уничтожены, прежде чем попасть в эту сцену? – Bijan

ответ

2

Time.smoothDeltaTime не является постоянной скоростью, поэтому расстояние, на которое движется ваша платформа, изменится. Эти небольшие отличия будут складываться и вытеснять исходное положение.

Я бы определил начало & конечных точек, а затем переместился между ними. Проверьте эти удобные методы для некоторых идей: Vector3.MoveTowards & Vector3.Lerp

0

Ее лучше использовать твин двигатель, как http://dotween.demigiant.com/.

Если вы устанавливаете Dotween, то вы можете просто использовать

transform.DOMove(new vector3(1 ,0 , 1) , duration); 

Вы также можете установить Простоту для анимации. или использовать Oncomplete fucntions;

transform.DOMove(new vector3(1 ,0 , 1) , duration) 
    .SetEase(Ease.OutCubic) 
    .OnCompelete(() => { shouldClose = true; }); 

Вы также можете установить цикл для анимации .SetLoops(-1).

 Смежные вопросы

  • Нет связанных вопросов^_^