2015-10-01 3 views
0

Я имею 2d спрайт движущийся автоматически, и было просто интересно, как увеличить скорость этого:Как увеличить скорость этого transform.translate

transform.Translate(0.10F, -0.03F, 0 * Time.deltaTime); 

Пытались установки переменной скорости, а затем делать:

transform.Translate(0.1f,-0.05f,speed*Time.deltaTime); 

Но это заканчивается сделать фон в окне игры исчезают (потому что игрок движется от 2-ю фон через ось г), в то время как в окне сцены игрок движется вниз карту, но на такая же скорость

+0

, преобразование компонент является то, что? –

+0

Спрайт, который я пытаюсь переместить – lego116

+0

Я не знаю, каковы параметры этого метода, но на вашем верхнем, вы всегда проходите в 0. Я думаю, что ваш 'Time.deltaTime' такое смехотворно небольшое число (вероятно, хорошо под .1), что все, что вы его умножаете, не имеет никакого эффекта. – krillgar

ответ

0

Если вы хотите 2D, вы не хотите, чтобы спрайты перемещались по оси z (это может быть полезно только для порядка рисования). Игроки должны увеличивать скорость по оси x или y. Таким образом, в вашем коде вы можете сделать что-то подобное.

transform.Translate(xSpeed, ySpeed, 0); 

Если вы хотите нарисовать что-то за этим спрайтом, просто поставьте значение, меньшее z-значения этого. Я предполагаю, что вы вызываете это в своем методе обновления. Здесь xSpeed и ySpeed - это поплавки. Отрицательные значения будут перемещать объект в противоположном направлении.

0

Вы можете применить к speedTranslate путем умножения его на перевод вектора, newPosition в этом примере:

void Update() { 
    float speed = 3f; 
    Vector3 newPosition = new Vector3 (.1f, -.05f, 0f); 
    transform.Translate (newPosition * Time.deltaTime * speed); 
}