Actionscript 2高级碰撞检测

时间:2013-06-25 04:08:07

标签: flash actionscript actionscript-2 collision hittest

我想知道在AS2中进行高级碰撞检测的最佳方法是什么。我不是指盒子,因为那很好。具体来说,当与某些东西发生碰撞时,如何阻止玩家向一个方向移动。

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

我有一个数组,可以跟踪玩家当前移动的方向(向上,向下,向左,向右)。如果相应的变量为真,我还有四个允许玩家在每个方向上移动的变量。当玩家与碰撞阵列中的动画片段碰撞时,我将与他正在移动的方向相关的变量设置为假,这样他就不能继续朝着与物体碰撞时的方向移动。当玩家沿着对角线(两个方向)移动并与他应该能够继续向一个方向移动的东西发生碰撞时,问题就出现了。例如:

enter image description here

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

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

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

什么是最简单的测试方法? :d

1 个答案:

答案 0 :(得分:1)

你还没有发布任何代码,所以很难说,但你可能会以错误的方式对碰撞作出反应。

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

基本上你想做的是:

  1. 跟踪玩家最后一帧的位置
  2. 检查播放器是否与墙壁碰撞此框架
  3. 如果是,请检查他在最后一帧的位置,以了解碰撞发生前他所在墙的哪一侧。使用此信息重新定位播放器,使其接触到墙壁的那一面。