首页 > 解决方案 > 与编辑器 Unity 2D 相比,玩家在构建中的移动速度更快

问题描述

我的问题和标题一样。与我在编辑器中玩游戏时相比,当我构建游戏时,我的玩家和敌人的移动速度都快得多。我在网上看过,但大多数论坛页面都说将运动乘以 Time.deltaTime,但由于某种原因,这对我不起作用,因为即使我重新构建游戏运动也更快。如果有帮助,我的角色和敌人都会被 Rigidbody2D.MovePosition 移动。我认为我需要限制帧速率,以便一切都变慢,但我不确定。如果你认为我应该这样做,我会怎么做?提前致谢。

敌人和玩家都使用它来移动:

GetComponent<Rigidbody2D>().MovePosition(transform.position + move * speed * Time.deltaTime);

如果有帮助,“移动”是 Vector3 坐标,玩家角色的速度设置为 30。每次进行更改后,我都会单击“构建并运行”。

标签: c#unity3d

解决方案


您的代码是在 FixedUpdate() 还是 Update() 中?物理代码应该在 FixedUpdate() 中。注意我将 Time.deltaTime 更改为 Time.fixedDeltaTime

void Update() {
  //Your Non Physics Code
}

void FixedUpdate() {
   //Your Physics code aka
   GetComponent<Rigidbody2D>().MovePosition(transform.position + move * speed * Time.fixedDeltaTime);

}

推荐阅读