С точки зрения игры, скорость камеры идеальна, но во время тестирования в телефонах скорость камеры намного ниже - PullRequest
0 голосов
/ 19 февраля 2019

В моей игре скорость камеры идеальная, как я и хотел.

В телефонах во время тестирования у моей игры скорость камеры очень низкая.Я не знаю, как это исправить и какова основная причина этой проблемы.

Это сценарий, который я прикрепил к основной камере.

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 Ответ

0 голосов
/ 19 февраля 2019

Вы звоните 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

раз.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...