【发布时间】:2017-07-10 13:27:17
【问题描述】:
这是我的困境
我的游戏舞台周围有 4 堵墙,当玩家撞到这些墙时,我不想为每一堵墙都做一个 if 语句来检查玩家是否撞到了它,所以我创建了一个阵列来固定墙壁,然后检查玩家是否击中它。现在,因为我正在这样做,所以如果玩家击中某物,我将不知道他实际击中了什么,并且如果他击中 [0], [1], [2] 等,我无法在我的数组中进行检查,因为那时我会重新开始检查是否他正在击中特定的墙壁。我不想这样做的原因是为了将来,当我添加更多的障碍、建筑物等时。
所以我的问题是,我怎样才能进行碰撞检查,而不需要对特定对象进行硬编码检查,并提供某种可用于玩家响应的值,例如,如果你撞到顶墙而你可以在不执行上述操作的情况下以某种方式解决此问题,然后使其无法通过或其他方式,
if (main.playerPosKeeper_mc.hitTestObject(this[main.StageCollisions]))
{
trace("hit");
}
StageCollisions 是一个数组,其中包含我的所有障碍。
当玩家在 StageCollisions 中击中任何东西时,我不能简单地从他的 y 值或 x 值中减去,因为我不知道他击中了哪个对象,但我也不想对其进行硬编码,以便我检查我是否击中了让我们说最高障碍,因为如果我只是回到制作静态 if else 语句,为什么首先要做一个数组。
^^ 引用这个话题
AS3 - How to Cycle States of Character Animations (moving & stopped)
这一直困扰着我一段时间,因此将不胜感激。这是一个很难形成的问题,因此我可以在必要时澄清要点。
【问题讨论】:
-
所以你想在循环处理4个边界墙的同时将英雄剪辑保持在某个矩形内?
-
不一定,我正在做碰撞检查,我很好奇我如何知道玩家正在撞击哪面墙,而不检查我拥有的每一面墙,然后给出适当的命令。我的真正目标是摆脱对特定对象的硬编码碰撞检查,因为如果我让游戏变得更大,我必须对特定对象进行更多检查。我包含的主题来自用户 Vesper 的回复是我一直在努力的,但值得拥有自己的主题。这可能是我想多了,但是是的。
-
另外,忘了提一下,一旦点击了 dpad 方向,我就会进行碰撞检查,之前我被告知要使用循环,可能是通过使用激活每一帧的事件侦听器,但我认为一种更简单、更有效的方法是仅在您单击 dpad 时进行检查,它会将您移向该方向,检查您是否击中某物,如果您击中某物,则将您向后移动,但后来我得到了上面的问题我不知道我在打什么,而且如果我想添加更多的墙壁和东西,我不想为了将来对特定对象进行硬编码检查。
-
不确定我能得到你想要的。您可以拥有一组(任意数量)墙壁,并且在循环中您可以找到是否有任何墙壁与英雄发生碰撞,如果有的话,您还可以找到应该归咎于哪一堵墙壁。这就是你想要的吗?
-
对于 GameDev 堆栈交换来说可能是一个更好的问题。
标签: arrays actionscript-3 flash actionscript