С точки зрения игры, скорость камеры идеальна, но во время тестирования в телефонах скорость камеры намного ниже
В моей игре скорость камеры идеальная, как я и хотел.
В телефонах во время тестирования моей игровой камеры скорость очень низкая. Я не знаю, как это исправить и какова основная причина этой проблемы.
Это скрипт, который я прикрепил к основной камере.
public float translation;
public float highspeed;//highest speed of the camera
public float incfactor;//increasing ,multiplying number
public bool ismoving = false;
private float timer = 0f;
private Rigidbody2D dia;
private void Start()
{
dia = GetComponent<Rigidbody2D>();
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if (hit.collider != null)
{
if (hit.collider.tag == "dialogue")
{
Destroy(hit.collider.gameObject);
ismoving = true;
}
}
}
if (ismoving == true)
{
Updatemove();
}
}
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, 0);
}
1 ответ
Ты звонишь 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/ частота кадров = 0,017 (для 60 кадров в секунду)), вам, вероятно, придется увеличить incfactor
более или менее в 60