如何避免在Unity 2D Runner中恶化延迟/减慢?

时间:2016-10-31 01:10:38

标签: unity3d unity5

我在脚本中出错或者它是一个错误,我不知道。当我第一次开始游戏时它变得非常流畅,但是在我玩了20秒之后,玩家开始移动得越来越慢,最后他几乎不动。

游戏是Endless Runner,当我死的时候按下重试,然后在每次重试后都会变慢。

脚本

 void MovePlayerOnYAxis()
    {

        foreach (Touch touch in Input.touches)
        {
            Vector3 newPosition = transform.position;
            newPosition.y += Mathf.Clamp(touch.deltaPosition.y * speed, MIN_SPEED, MAX_SPEED) * Time.fixedDeltaTime;
            transform.position = newPosition;

        }

    }

1 个答案:

答案 0 :(得分:1)

您的问题在以下一行:

newPosition.y += Mathf.Clamp(touch.deltaPosition.y * speed, MIN_SPEED, MAX_SPEED) * Time.fixedDeltaTime;

当你乘以 touch.deltaPosition * speed 时,你最有可能限制每帧的总速度,除非你真的不经常点击。

如果你试图让每次触摸都让角色更快,我建议使用刚体,而不是改变它的位置。

最后,您可以通过添加新的Vector3(例如

)来简化代码
foreach (Touch touch in Input.touches)
    {
        transform.position = transform.position + new Vector3(0,Mathf.Clamp(touch.deltaPosition.y * speed, MIN_SPEED, MAX_SPEED) * Time.fixedDeltaTime,0);
    }