Phaser中Arcade,P2和Ninja物理之间的区别


33

我是一个初学者,正在尝试使用Phaser学习游戏开发。目前,Phaser正在提供三个物理系统,分别是Arcade,P2和Ninja。但是我不知道它们之间的区别,我也想知道在哪种情况下我们应该使用特定的物理系统?

请给我一些有关这些物理系统的见解。


1
Phaser随附了我们的Arcade Physics系统,Ninja Physics和P2.JS-全身物理系统。Arcade Physics仅适用于高速AABB碰撞。Ninja Physics允许使用复杂的砖块和坡度,非常适合水平风景,而P2.JS是一个全身物理系统,具有约束,弹簧,多边形支撑等。
congusbongus

现在还有付费的Box2D后端,应该与P2.JS类似,但更好。
Ciro Santilli新疆改造中心法轮功六四事件

Answers:


39

正如评论中提到的那样,他们的站点已经解释了这三种系统的含义以及它们的用途。

Arcade Physics仅适用于高速AABB碰撞。

AABB表示轴对齐的有界矩形;这意味着您的对象没有旋转,并且仅检查图像(矩形)是否与另一图像重叠(因此可能发生碰撞)。这是便宜的计算,而且速度很快,这可能就是为什么他们推荐它用于高速碰撞。

AABB的一个问题是,它不能保证确实有碰撞。您可能有一个完全透明的区域重叠。

忍者物理学允许复杂的瓷砖和斜坡,非常适合水平的风景,[...]

还记得AABB如何不旋转吗?忍者物理将处理旋转(因此它可以进行倾斜和复杂的平铺)。这是一个更灵活(可能更准确)的物理模型;它可能会更慢。

[...] P2.JS是一个全身物理系统,具有约束,弹簧,多边形支撑等。

如果您需要对弹簧(例如,像钟摆那样摆动的东西),力的约束以及任意多边形形状(例如,四面体)进行建模,这听起来像您想要的。如果您需要参考框架,可以考虑使用《愤怒的小鸟》。

根据您的游戏,您可以选择最适合您的需求。这听起来像是速度与准确性/复杂性的对比(Arcade Physics是最快但最简单的)。


一种更精确的模型是否会降低性能?
expiredninja 2014年

@expiredninja是的,当然。AABB又快又便宜;其他两个更为复杂且功能丰富(例如,坡度,旋转度),因此它们以性能为代价。
ashes999 2014年

我想我想知道阈值通常在对象的数量和/或复杂性方面是多少。
expiredninja 2014年

2
@expiredninja在很大程度上取决于您的硬件和游戏逻辑。我建议您再提出一个问题,或者更好的方法是,尝试一下,看看最适合您的需求的问题。
ashes999 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.