在游戏视图中,相机速度是完美的,但是在手机测试时,相机速度要慢得多



在我的游戏中,相机速度非常完美。

在手机中,在测试我的游戏相机速度时,速度很慢。我不知道该如何解决此问题,这是什么原因原因。

这是我附加到主相机的脚本。

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);
}

您在Update中调用Updatemove,称为每个帧。

但是,比您通过固定值translationTranslate,它是框架依赖性(下framerate =>更少的呼叫=>较慢的运动)

您的对象将以(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 fps)),您可能必须将incfactor或多或少地增加到60

以上。

最新更新