我正在为Android设备开发在线多人fps游戏。
我的游戏中有12位玩家,一侧有6位玩家,另一侧有6位玩家,他们互相残杀。
一切正常,但我的游戏中有一个问题,那就是,当玩家在场景中时,鼠标的外观会变慢。
这是我的代码:
public void MyUpdate()
{
the_time = Time.deltaTime;
if (Input.touches.Length > 0)
{
foreach (Touch t in Input.touches)
{
if (t.position.x > Screen.width / 2)
{
if (t.phase == TouchPhase.Began)
{
delta = t.deltaPosition;
}
if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Moved)
{
delta = -t.deltaPosition;
ROTX_ROTY.x += (delta.y * sensitivityX * current_speed_offset_vertical * the_time);
ROTX_ROTY.y -= delta.x * sensitivityY * current_speed_offset * the_time;
ROTX_ROTY.x = Mathf.Clamp(ROTX_ROTY.x, -clampAngle, clampAngle);
MyTransform.rotation = Quaternion.AngleAxis(ROTX_ROTY.y,Vector3.up);
x_rot_transform.localRotation = Quaternion.AngleAxis(ROTX_ROTY.x, Vector3.right);
}
else if (t.phase == TouchPhase.Ended)
{
delta = t.deltaPosition;
}
}
}
}
}
任何人都知道我该如何解决这个问题? 因为这种滞后只是在我的鼠标外观上。走路,射击等其他事情都很好!
有什么方法可以针对手机优化此代码?
例如,我使用Quaternion.AngleAxis
而不是Quaternion.Euler
,因为它运行的更快一些。但是毕竟,我在游戏中每隔几秒钟就会落后一次。
////////////////////// 更新:
我更改了代码的一部分,并将IF
语句更改为switch case
,但是我的问题没有解决。
if (Input.touches.Length > 0)
{
foreach (Touch t in Input.touches)
{
if (t.position.x > Screen.width / 2)
{
switch (t.phase)
{
case TouchPhase.Moved:
delta = -t.deltaPosition;
ROTX_ROTY.x += (delta.y * sensitivityX * current_speed_offset_vertical * the_time);
ROTX_ROTY.y -= delta.x * sensitivityY * current_speed_offset * the_time;
ROTX_ROTY.x = Mathf.Clamp(ROTX_ROTY.x, -clampAngle, clampAngle);
MyTransform.rotation = Quaternion.AngleAxis(ROTX_ROTY.y, Vector3.up);
x_rot_transform.localRotation = Quaternion.AngleAxis(ROTX_ROTY.x, Vector3.right);
break;
default:
delta = t.deltaPosition;
break;
}
}
}
}