game-physics - Godot中2D物理的测量单位(单位比例)?
问题描述
在 Unity/Box2D 中,我记得尊重 1 单位 = 1 米规则并将世界设置在合理的数值范围内以实现数值稳定性至关重要。例如,这个问题的引述:
Box2D 是一个内部使用 MKS 单位系统的模拟框架。如果您想要一个可靠且可预测的模拟,您应该在这个单位系统内以合理的值表达您创建的模拟系统。你希望一个盒子表现得像一个盒子,一个岩石表现得像一个岩石,一个球表现得像一个球。
Godot的物理文档没有提到任何关于基本测量单位的内容。从论坛帖子来看,人们似乎使用 1 个单位 = 1 个像素。
我的问题是:
- Godot 的 2D 物理是否针对某个值范围进行了调整?
如果它们被调整为使用像素,那实际上意味着什么?
例如,我是否应该避免我有任何小于 1 个单位的物理对象(因为它在视觉上并不相关)。或者另一方面,如果我的世界需要模拟宏观物理效果(即以像素表示时非常大),我是否应该在内部缩小世界以保持稳定性?
解决方案
虽然我找不到官方声明,但我们可以收集一些信息。您找到了一些论坛帖子,并且我们可以将文档中的一些提示拼凑在一起。
3D介绍提到:
Godot 对所有事物都使用公制。3D 物理和其他领域为此进行了调整,因此尝试使用不同的比例通常是一个坏主意(除非您知道自己在做什么)。
ARVRServer文档提到:
大多数 AR/VR 平台假设 1 个游戏世界单位 = 现实世界中的 1 米。
虽然大多数游戏可能不是 AR/VR,但在没有其他信息的情况下遵循这个比例似乎是个好主意。
那么给定 1unit=1meter 的 3D 比例尺,我们应该为 2D 做些什么呢?默认 3D 重力设置为9.8
,默认 2D 重力设置为98
(您可以在 下找到Project Settings > Physics > 2D
)。鉴于此,我猜 10px = 1 米。
推荐阅读
- java - 尝试调用虚拟方法 'android.content.Context android.content.Context.getApplicationContext()'
- javascript - 这个进程如何在后台运行?
- wpf - 在图像上运行多个 xaml 动画
- ios - 在 Ionic 3 for IOS 中读取 SMS
- angular - 错误:RouterModule.forRoot() 调用了两次
- intellij-idea - IntelliJ IDEA 在项目名称中添加数字
- r - 基于不同列值的虚拟变量
- java - Java如何在Resultset中检索超过100万行
- angularjs - 如何根据在angularjs中选中的单选框显示特定的div
- laravel - Laravel 图像源不可读错误