2D Platformer的墙跳


14

我一直在寻找一种在xna游戏中实现跳墙的方法,但是我找不到有关它的任何信息,有人可以请我帮忙吗?

Answers:


21

当玩家在跳跃(或者,如果要摔倒)的过程中与墙壁碰撞时,请在接下来的100毫秒内打开一个标志,以便尝试进行跳跃以成功发起跳跃(忽略任何表面接触检查)。 X轴上远离墙壁方向的速度相当大。请记住,如果实际上已经启动了跳转,请尽早关闭该标志。


3
我认为您需要修改第一句话:“当玩家与墙壁碰撞时(他们在跳跃时……)”,否则玩家可能会从静止不动的墙壁跳到墙壁旁边,这不会预期。
CiscoIPPhone 2011年

@CiscoIPPhone:是的,谢谢。这将在碰撞后100 ms和以后的100 ms之间产生奇怪的行为变化。
混乱

2

老实说,我只是做了点检查。所以:

if (falling AND left_key_pressed AND !point_free(x-1,y))
    doWallJump

您可能需要将y更改为y + sprite_width / 2(或-取决于您的坐标系),以便它检查您的精灵在中间的左侧而不是顶部(或底部)。这就是N如何执行壁跳检查(最后一段)的方式

之后,您必须决定要让壁跳多紧。如果跳高的垂直速度在玩家再次到达同一堵墙之前超过了水平线,则您将无法从同一堵墙向上跳墙,而将逐渐回落到底部(例如在带有跳墙的马里奥游戏中) )。如果您确实允许水平线足够弱,以使玩家能够回到墙壁上,则他/她将能够向上爬墙(例如在《肉仔》中)。

没有提到的另一种方法是超级银河战士的。在该游戏中,当您靠在墙上时,如果您从该墙上移开,将播放非常短的“从墙上移开”动画。如果您在该动画过程中跳跃,则将进行墙跳跃。(超级银河战士还允许玩家使用墙跳来爬上一堵墙,但这需要一些技巧(实际上,关于超级银河战士中的壁跳的一切都需要相当的技巧...)。

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.