不同屏幕尺寸下Unity的物理行为不同。

5
我正在开发一个2D的顶视开放世界游戏,其中有一个角色可以通过键盘功能移动。移动是由Rigidbody.AddForce()引起的。
问题在于,在不同的屏幕尺寸下,移动速度是不同的。
以下是简单的代码:
void FixedUpdate()
{
    if (Input.GetButton("Move"))
        rigidbody.AddForce(transform.forward * speed);
}

角色的质量相同,浮点速度相同,但当我将游戏视图切换到全屏后,角色显然移动得更快(这很奇怪,并表明这不是性能问题)。我已经尝试测试独立构建,一切都很好(但在Android构建中似乎有点慢)。但我需要在编辑器中有一个共同的速度,因为我必须设计依赖于时间和速度的关卡。

非常奇怪,因为在Unity中不应该有这样的情况。屏幕大小和物理无关。我建议你这样做:实时打印刚体速度和可能的力的实际值,看看实际发生了什么。最快的方法可能是使用传统GUI:void OnGUI(){ GUI.Label(new Rect(10, 10, 100, 20), rigidbody.velocity.ToString()); } - Yuri Nudelman
2个回答

8

物理学作用于世界空间(WorldSpace),与屏幕空间(ScreenSpace)无关,因此您的问题可能超出了表面看起来的范围。在Android上性能下降是预期的,但在独立模式中,请确保您使用FixedUpdate进行物理操作(您在这里已经这样做了),并确保没有任何东西会在游戏期间改变FixedTimeStep


1
是的,谢谢你的回答,我发现在一个驱动类中有一个Update方法,它会影响刚体。感谢你提醒我使用FixedUpdate。 - Bamdad

3

你尝试通过 Time.fixedDeltaTime 来提高速度了吗? 如果没有成功,可以尝试使用平台相关编译:

    #if UNITY_STANDALONE_WIN
        //do something
    #elif UNITY_ANDROID
        // do something
    #endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接