我在玩Crafty.js游戏引擎。我有一个小型游戏,玩家是一个球,他掉到平台上。每当他进入下一个平台时,他都会获得积分。分数存储为变量并显示在屏幕上。我正在使用Crafty的碰撞检测来检测玩家何时击中新平台。如果您不熟悉Crafty,这很简单,只要玩家点击新平台,就会触发一个事件,我可以在总谱中添加一个。

我的问题:
游戏的运行速度约为60fps。每次重新加载画布时,Crafty都会检测玩家是否真的在触摸平台。这导致我的得分变量在玩家触摸关卡时每增加一帧。这远不是我想要的。我希望分数在每个平台上一次增加。这是我不知道如何解决的问题。

我尝试解决的其他问题:
我还考虑了不断地测量玩家到起点的距离,然后我可以(按分区)分辨出玩家所在的平台(因为平台在垂直方向上的间距相等)。但是,这是一个问题,因为Crafty遇到了问题,无法为我提供播放器的当前位置。

我认为会起作用:我想如果我可以在播放器击中每个平台的第一帧触发一个事件,那可能会起作用。 (请注意,如果玩家停留在一个平台上并第二次跳起来并降落在同一平台上,则我只想增加一个点,而不是两次跳动)

你们需要我什么:您遇到过这个问题吗?我真的需要完成这个游戏。而且这个小技术问题使我无法完成它。我希望有人输入。

最佳答案

最简单的解决方案似乎是为每个平台设置一个变量,以跟踪玩家是否已登陆该平台。然后,只要球与尚未落地的平台接触,就给一个分数并标记该平台为落地。

如果平台按线性顺序排列,您甚至可以使用一个整数变量来跟踪播放器所在的平台。

10-06 00:02