在重力世界中使角色沿着弯曲的斜坡移动


10

我看过这个游戏

花式裤子2。除了物理和精美的动画外,我注意到的是角色正在沿着斜坡甚至弯曲的斜坡运动。我对Box2d的经验很少,但是这种弯曲坡度的概念对我来说是新的。如果有人在这个概念及其实现方面对我有所启发,那将对我有很大的帮助。即使该实现不在box2d中,它也是受欢迎的。


2
Metanet,做过N(在Flash中)的家伙有一个有关如何进行碰撞的教程,其中涵盖了如何计算曲线:metanetsoftware.com/technique/tutorialA.html
CodexArcanum 2010年

Answers:


5

如何在Box2D中获得曲线?

未发布的Box2D版本中,有两种新的形状类型,b2LoopShapeb2EdgeShape,它们使您可以根据一系列线段构建曲线。

在发布的版本中,可以使用多个角度设置的小盒子来获得相似的效果,但是物体倾向于在连接点附近做不稳定和意外的事情。因此,我建议使用未发行的版本。

角色如何掉落曲线?

让角色成为轮子!我对平台游戏物理学的问题对此进行了一些讨论,但基本思想是将角色的身体安装在旋转的车轮上,并通过向车轮施加旋转力来移动。即使(实际上是因为)车轮具有摩擦力,来自重力的向下力也会使车轮向下倾斜,就像真实的车轮一样。通过更改旋转接头的电机参数,可以使其尽可能抵抗旋转,以免其向下倾斜。


我同意你的看法,使用b2LoopShape可以创建一个坡度作为我的愿望。但是,跟随您发布的链接;问题是,它不会导致box2d的Flash端口只是c ++版本。1.)您对此有何建议?或2.)您是否知道其他任何可以产生弯曲坡度的闪光灯物理引擎?
毗湿奴(Vishnu)2010年

我认为Box2D的Flash端口不是最新的新关节/形状类型。除了Box2D,我不知道Flash还能使用哪些物理引擎。

@ Joe:如果我问你,如果我尝试为b2LoopShape编写一个AS类是否可行?因此我可以将其合并到Box2d Flash API中。我必须从哪里开始前进?有什么线索吗?
Vishnu

1

花式裤子是用Flash制作的,Flash有一种称为“ hitTest”的特定方法,该方法可让您根据绘制的内容来测试像素(在这种情况下,他可能会在花式裤子字符底部进行2-3个像素的hitTests)在指定的动画片段对象中。要使其感觉正确可能会有些棘手,但是此内置功能是为什么如此多的Flash游戏与弯曲坡度发生碰撞的原因。对于大多数其他引擎而言,该过程要复杂得多,通常必须手动完成,但是有几种不同的方法。

我最熟悉的方法是,如果您的引擎是基于图块的(想想刺猬索尼克),则指定为弯曲的图块可能每个都有一个公式,该公式根据角色的当前“ X”位置确定“ Y”碰撞位置在那个瓷砖上。您将必须根据要查找的坡度和弯曲程度来确定公式。您可以使用图形计算器或图形程序来试验公式。这样,您可以拥有多个具有不同曲线和公式的图块。


Sonic没有磁贴的曲线公式。它为每个像素使用2d高度图。
AttackingHobo 2010年

@AttackingHobo:您能告诉我每个像素的2dheight地图是什么,或者您可以指向我可以在Flash游戏中使用它的地方吗?
Vishnu

2
info.sonicretro.org/Sonic_Physics_Guide看看这个。我不知道如果您使用方框2d,这是否对您有帮助。您可能必须使用自己的物理引擎。
AttackingHobo 2010年

@Attacking Hobo:如果我尝试制作允许在box2d api中循环的AS 3.0类,“做”弯曲坡度是否有任何优势或可能性?
毗湿奴(Vishnu)2010年
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.