在我的游戏中,相机速度非常完美。
在手机中,在测试我的游戏相机速度时,速度很慢。我不知道该如何解决此问题,这是什么原因原因。
这是我附加到主相机的脚本。
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
,称为每个帧。
但是,比您通过固定值translation
的Translate
,它是框架依赖性(下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