统一不同屏幕尺寸下的不同物理行为
Unity different physics behaviour in different screen sizes
我正在开发一个 2D 自上而下的开放世界游戏,其中有一个可以通过键盘功能移动的角色。移动是由 Rigidbody.AddForce().
引起的
问题是在不同的屏幕尺寸下移动速度不一样。
这是简单的代码:
void FixedUpdate()
{
if (Input.GetButton("Move"))
rigidbody.AddForce(transform.forward * speed);
}
角色质量相同,漂浮速度相同,但我将游戏视图切换到全屏后,显然角色移动速度更快。 (这很奇怪,表明这不是性能问题。)
我已经尝试测试独立构建,一切都很好(但是在 android 构建中似乎有点慢。)但是我需要在编辑器中有一个共同的速度,因为我必须设计依赖于时间和时间取决于速度。
您是否尝试将速度乘以 Time.fixedDeltaTime?
如果它不起作用,请尝试依赖于平台的编译:
#if UNITY_STANDALONE_WIN
//do something
#elif UNITY_ANDROID
// do something
#endif
物理在 WorldSpace 中起作用,与 ScreenSpace 无关,所以你的问题超出了它看起来的范围。 android 的性能下降是预料之中的,但在独立的情况下,请确保您使用 FixedUpdate 进行物理操作(您在此处执行)并确保没有任何原因导致 FixedTimeStep 在游戏中随时改变。
我正在开发一个 2D 自上而下的开放世界游戏,其中有一个可以通过键盘功能移动的角色。移动是由 Rigidbody.AddForce().
引起的
问题是在不同的屏幕尺寸下移动速度不一样。
这是简单的代码:
void FixedUpdate()
{
if (Input.GetButton("Move"))
rigidbody.AddForce(transform.forward * speed);
}
角色质量相同,漂浮速度相同,但我将游戏视图切换到全屏后,显然角色移动速度更快。 (这很奇怪,表明这不是性能问题。)
我已经尝试测试独立构建,一切都很好(但是在 android 构建中似乎有点慢。)但是我需要在编辑器中有一个共同的速度,因为我必须设计依赖于时间和时间取决于速度。
您是否尝试将速度乘以 Time.fixedDeltaTime? 如果它不起作用,请尝试依赖于平台的编译:
#if UNITY_STANDALONE_WIN
//do something
#elif UNITY_ANDROID
// do something
#endif
物理在 WorldSpace 中起作用,与 ScreenSpace 无关,所以你的问题超出了它看起来的范围。 android 的性能下降是预料之中的,但在独立的情况下,请确保您使用 FixedUpdate 进行物理操作(您在此处执行)并确保没有任何原因导致 FixedTimeStep 在游戏中随时改变。