Вы звоните Updatemove
в Update
, который вызывается каждый кадр.
Но чем вы Translate
с фиксированным значением translation
, которое зависит от кадра (меньшая частота кадров => меньше вызовов => медленное движение)
Ваш объект будет двигаться со скоростью (translation * framerate) / seconds
, чтобы устранить этот фактор framerate
и получить стабильный результат,независимая от устройства скорость translation / seconds
вы должны умножить на Time.deltaTime
.
, поэтому она должна быть
public void Updatemove()
{
timer += Time.deltaTime;
if (timer > 1f && translation < highspeed)
{ //after 1 second has passed...
timer = 0; // reset timer
translation += incfactor ; //increase speed by 0.5
}
transform.Translate(0, translation * Time.deltaTime, 0);
}
, так как Time.deltaTime
- довольно небольшое значение (1/ framerate = 0.017 (для 60 кадров в секунду)) вам, вероятно, придется увеличить ваш incfactor
более или менее в 60
раз.