我有一个2D平台游戏,其中玩家始终向右行驶,但是地形并不总是水平的。例:
我实现了一个边界框碰撞系统,该系统仅检查与玩家框和其他方块的交点,以防止遇到大方块时玩家无法奔跑,因此必须跳下去,但是当我上楼梯时,我希望他就像他在水平地面上一样平稳运行。使用碰撞系统,您必须跳楼梯才能通过!
我考虑过要在楼梯的边缘之间生成一条线,并在那条线上强加玩家移动……您如何看待?还有更聪明的事情吗?
我有一个2D平台游戏,其中玩家始终向右行驶,但是地形并不总是水平的。例:
我实现了一个边界框碰撞系统,该系统仅检查与玩家框和其他方块的交点,以防止遇到大方块时玩家无法奔跑,因此必须跳下去,但是当我上楼梯时,我希望他就像他在水平地面上一样平稳运行。使用碰撞系统,您必须跳楼梯才能通过!
我考虑过要在楼梯的边缘之间生成一条线,并在那条线上强加玩家移动……您如何看待?还有更聪明的事情吗?
Answers:
如果您能够旋转边界框,那么我将在玩家的脚上放置一个45度旋转框,并将其与一个非旋转框组合起来以代表身体的其余部分。这可能会使播放器自动在足够小的物体上滑动。
不过,这可能会导致播放器模型和楼梯受到一些限制。
另一个想法是将一个比角色框更大的宽度的边框从角色的头部放置到kness。
当播放器与框“ A”没有碰到的东西碰撞时,您可以将播放器移到与之碰撞的顶部
_________________
| | | |
| | | |
| A | pla | A |
|____| yer |____|
| | _________________________ <- step
| | |
--------------------------------------------- <- ground
在视频游戏中,有三种处理楼梯的通用方法:
“马里奥”方法是您必须跳起来上楼梯。
“ Castlevania”方法是上下楼梯是另一种运动。您必须按下控制器上的“向上”键,然后播放特殊的“爬楼梯”动画以遍历楼梯。这种方法的一种变种是“生化危机”方法,其中上下楼梯被视为当玩家按下交互按钮时播放的完整过场动画。禁止任何交互式爬楼梯。
您提到的“几乎每个人都这样”的方法是:将楼梯视为实际上是坡道。根据游戏类型的不同,您可能希望将坡道相对于楼梯放置在不同的高度。通常,在2D游戏中,如果坡道与每个楼梯台阶的底角齐平,则“楼梯实际上是坡道”的招式对于玩家来说不太明显,而在3D游戏中,如果坡道与水平方向相同,则通常不太明显每个步骤的上角。(例如,在2D游戏中,更容易注意到角色的脚是否漂浮在地面上,因此,您希望将其最小化;而在3D游戏中,更容易注意到角色的脚是否在地面上修剪,所以您希望将其最小化)。
我目前正在研究引擎的类似部分,并且处理楼梯/坡度的方法是通过计算渐变纹理中的透明像素,并将玩家的对象偏移找到的数量。
它类似于本文详细介绍的高度图的概念:http : //info.sonicretro.org/SPG : Solid_Tiles#Slopes_And_Curves
我想这确实是您要执行的操作,您可以选择播放根据楼梯的升序播放的其他动画。
本文还对不同的坡度概念进行了很好的概述:http : //higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/