1

我想知道在 AS2 中进行高级碰撞检测的最佳方法是什么。我不是指边界框,因为这很好。具体来说,当与某物碰撞时,我如何阻止玩家朝一个方向移动。

想象一个自上而下的射手。基本上我正在寻找如何在与此类似的游戏中实现碰撞检测:http: //ninjakiwi.com/Games/Action/Play/SAS-Zombie-Assault-2.html

我有一个数组来跟踪玩家当前移动的方向(上、下、左、右)。如果相应的变量为真,我还有四个变量允许玩家在每个方向上移动。当玩家与碰撞数组中的动画剪辑发生碰撞时,我将与他正在移动的方向相关的变量设置为 false,因此当他与对象发生碰撞时,他不能继续朝着他前进的方向移动。当玩家沿对角线(两个方向)移动并与他应该能够继续沿一个方向移动的东西碰撞时,就会出现问题。示例:

在此处输入图像描述

游戏应该能够向上移动,但不能。

另一个问题是,当按下相反方向的键时,决定玩家是否可以移动的变量被设置回真(即,当按下左键时,能够向右移动被设置为真,因为我们已经向相反方向移动了)方向)。所以在前面的例子中,如果你不沿对角线移动而只是向右移动,然后在向上移动的同时按住右直到你不再接触对象,你将无法向右移动,因为没有按下左键.

似乎我把事情复杂化了,除了单独放置所有阻止玩家向一个方向移动的墙之外,还有什么办法吗?(即,如果玩家碰到这堵墙,就停止向右移动)。<--- 这种方式不允许在旋转对象时随机生成地图。或者有什么方法可以根据对象旋转使用数学来解决这个问题?

hitTest 最简单的方法是什么?:D

4

1 回答 1

1

您尚未发布任何代码,因此很难判断,但您可能会以错误的方式对碰撞做出反应。

如果您与墙壁发生碰撞,您应该将玩家移动到墙壁的外侧,而不是禁用移动。

基本上你想要做的是:

  1. 跟踪播放器上一帧的位置。
  2. 检查玩家是否在这一帧与墙壁发生碰撞。
  3. 如果是,请检查他在最后一帧的位置,以了解在碰撞发生之前他在墙的哪一侧。使用此信息重新定位玩家,以便他接触墙壁的那一面。
于 2013-06-25T04:13:37.777 回答