如何确定角色是否在无限的跑步者/跳跃者中掉入了空隙?


12

我正在建立一个2D无限跑步者。在游戏中,角色从支柱跳到支柱,支柱是随机生成的。我有这个工作。但是,如何确定角色是否未能跳上支柱并落入支柱之间的缝隙中呢?支柱是普通的矩形形状。


OT:尽管我将这个问题发布在rpg.SE上,但我认为“现在发现了什么样的规则利用?无限运行如何?”
o0'。

Answers:


20

在标高的底部添加一个矩形区域,该区域低于平台的最小允许高度。如果播放器与该区域相交,则说明它们已掉落平台。


1
并将这个矩形作为照相机的子代,以便它随照相机一起移动并始终存在吗?很简单 谢谢。
SanSolo 2015年

即使玩家不应该跌入关卡,我认为如果他设法做到这一点,这也是一个很好的保障。
mucaho 2015年

5
如果从字面上检查交点,请确保角色不会掉落得太快而无法穿过曲面(即,角色完全位于上方,下一帧完全位于下方)。
wchargin 2015年

2
是的,直肠应尽可能向下延伸以避免这种情况。同样,只需检查高度即可,但是这使您可以灵活地根据级别调整“非活动区域”的大小。
mklingen 2015年

6
为了避免通过矩形“剪切”,为什么不简单if (playerPos.x < minHeight)呢?
科尔·约翰逊

24

如果您的游戏仅水平滚动,则可以检查角色的垂直位置是否在舞台下边缘以下。

如果您的游戏也垂直滚动(可能向上滚动),则可以检查玩家是否跌落到视图底边缘(即屏幕上的舞台区域或相机焦点所在的区域)以下。

通常,死亡条件是角色无法保持“秘密”状态。通过控制相机的移动,您可以调整游戏玩法。例如,如果在垂直滚动阶段仅允许相机稍微向下“橡皮筋”,而允许完全向上运动,则将惩罚屏幕深处的深处跌落。


是的,这也是一种简单的方法。我只需要找出角色的最低位置即可。
SanSolo 2015年

1
正确!如果使用水平滚动条,则只需在地图编辑器中检查舞台的垂直大小即可。如果是垂直滚动条,则可以确保相机仅向上移动。这样,如果角色跌倒,他将最终落在摄像机视野下方。然后,您可以简单地检查角色的垂直位置是否低于视图的底部边界。
耶勒·范·坎普

@JellevanCampen:您不必一定限制摄像机向上移动。您可以杀死未能保留在“相机”中的角色,或者让相机跟随他们。
Mooing Duck 2015年

我不太喜欢这个答案,因为它直接将相机与水平边界相关联。即使关卡的边界大小超过一个屏幕高度,mklingen的答案仍然有效。摄像头可以上下移动以聚焦在角色上,但是没有风险,角色跌落的速度比摄像头快,保持在水平位置,但仍与直接连接到摄像头的边界框碰撞。
凯文

2
@Kevin:我同意一般游戏,但不同意程序生成的无限滚动条。例如,在垂直滚动条中,您将不得不继续产生新的盒子并消失屏幕外的盒子,或者您必须在相机移动时不断更新盒子。由于死亡条件直接与“无法留在相机中”有关,因此将死亡条件与相机相关是很有意义的。它也更有能力执行摄像机边界检查,而不是生成新对象并诉诸碰撞检查。
耶勒·范·坎普

2

除了检查垂直坐标外,您还可以检查垂直速度。如果角色是下降速度快于某个阈值,得出结论:他们死了(即使一些平台足够低的,我们仍然能够,其影响将是致命的)。

当然,这只是工作,如果你的游戏正确实现了基本的自由落体物理学,即向下的速度居然提高了秋天,因为它在现实中确实(直到终端速度)。


1

如果您有支柱的高度,则可以找到最低的支柱,并将其与播放器的垂直位置进行比较。如果他低于最低的支柱,那么他就没有机会回来。您只能将此检查限制在播放器后面和前面的支柱上。

示例:我们有3个支柱,其高度分别为[10、20、40]。玩家跳到身高40的柱子上,他跳到20。他感觉到40到20之间的空隙,他现在处于15的高度。这意味着他感觉到了。对于不太严格的检查,请等待他低于10。


所有支柱的大小均相同。是两根支柱之间的水平间隙不同:)
SanSolo 2015年

0

记下角色跌落的时间。(即他们已经“向下”移动了多长时间)。一旦跌倒的时间超过了筛选的时间,从定义上讲,他们就离开了舞台,是吗?

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.