让玩家顺利地跑上楼梯

我有一个2D平台游戏,玩家总是在右边跑,但是地形并不总是水平的。 例:

一个例子

我实现了一个边界框碰撞系统,只是检查与玩家盒和其他块的交叉点,如果遇到一个大块阻止玩家跑步,所以你必须跳,但是当我把楼梯,我要他就像他在水平地面上一样顺利地运行。 有了碰撞系统,你必须跳楼才能通过它们!

我想过在楼梯边缘之间划出一条线,然后把这个球员的运动强加在这条线上……你怎么看? 有什么更聪明的做法吗?

像这儿

如果你能够旋转边界框,我会把一个45度旋转的方块放在玩家的脚下,并把它和一个不旋转的方块结合来表示身体的其余部分。 这可以让玩家自动滑过任何足够小的东西。

虽然,这可能会导致玩家模型和楼梯剪辑。

另一个想法是把角色的头部中的一个边界框放在比角色的框宽度更高的宽度上。

当玩家碰到盒子“A”所没有的东西时,你可以将玩家移动到与其相撞的地方

_________________ | | | | | | | | | A | pla | A | |____| yer |____| | | _________________________ <- step | | | --------------------------------------------- <- ground 

video游戏中有三种处理楼梯的一般方法:

“马里奥”的方法是,你必须跳上楼梯。

“恶魔城”的做法是上下楼梯是一种不同的运动, 你必须按下控制器上的'up',并且播放特殊的“爬楼梯”animation来遍历楼梯。 其中的一个变体是“生化危机”,其中上下楼梯被视为一个完整的过场animation,当玩家按下一个互动button时, 任何交互式爬楼梯都是不允许的。

“几乎所有人”的方法就是你提到的方法:把楼梯看作实际上是一个斜坡。 根据不同types的游戏,您可能希望将坡道放置在相对于楼梯的不同高度。 通常在2D游戏中,如果斜坡与每个楼梯台阶的底部拐角水平相同,则“阶梯实际上是斜坡”技巧对于玩家不太明显;而在3D游戏中,如果斜坡是水平的,则通常不太明显与每一步的顶部角落。 (在2D游戏中,如果角色的脚在地面上浮动,则更容易察觉,因此您希望将其最小化,而在3D游戏中,更容易注意角色的脚是否在地面上剪辑,因此您想要最小化)。

我遇到的大部分方法已经在上面说过了 – 但还有一个还没有提到。 当玩家遇到一个足够短的垂直障碍(比如三分之一的高度)时,只需把它们放在最上面。 例如Minecraft和Source引擎在这种情况下采取这种方法。 另外,这种方法可以让你在所有的物理场合中仍然使用纯粹的AABB,而不会让玩家经常不得不跳上楼梯。

我目前正在做一个引擎的类似部分,而我处理楼梯/斜坡的方式是通过计算我的斜坡纹理中的透明像素,并通过find的数量来抵消玩家的对象。

它与本文详细介绍的高度图的概念类似: http : //info.sonicretro.org/SPG : Solid_Tiles#Slopes_And_Curves

我想这真的是你想要做的,你可以select播放不同的animation,根据楼梯的提升进行播放。

这篇文章中还有关于不同坡度概念的很好的概述: http : //higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/