统一不同屏幕尺寸下的不同物理行为

Posted

技术标签:

【中文标题】统一不同屏幕尺寸下的不同物理行为【英文标题】:Unity different physics behaviour in different screen sizes 【发布时间】:2019-03-26 20:23:00 【问题描述】:

我正在开发一款 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()); 【参考方案1】:

Physics 在 WorldSpace 中工作,与 ScreenSpace 无关,因此您的问题超出了它的想象。 android 上的性能下降是意料之中的,但在独立运行时,请确保您使用 FixedUpdate 进行物理操作(您在此处执行此操作)并确保在游戏中的任何机会。

【讨论】:

是的,感谢您的回答,我发现驱动类中有一个 Update 方法正在影响刚体。感谢您提醒我 FixedUpdate。【参考方案2】:

您是否尝试将您的速度与 Time.fixedDeltaTime 相乘? 如果不起作用,请尝试平台相关编译:

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

【讨论】:

以上是关于统一不同屏幕尺寸下的不同物理行为的主要内容,如果未能解决你的问题,请参考以下文章

Android 屏幕适配基础

如何解决不同屏幕尺寸下的相同dpi问题。

设计微信小程序是按照啥尺寸做?

不同屏幕尺寸相差大么和不同尺寸屏幕比较

不同屏幕尺寸相差大么和不同尺寸屏幕比较

不同屏幕尺寸相差大么和不同尺寸屏幕比较