检测两个物体碰撞的点

时间:2012-06-28 12:02:20

标签: actionscript-3 flash flash-cs5

我是Flash和Actionscript的初学者,很抱歉,如果我的questuon是愚蠢的。 我必须制作一个平台游戏 - 我打算写一些像冰冷的塔 - 我的角色从一个平台跳到另一个平台,以达到某个塔的顶部。这是我的问题 - 我想让角色只从顶部跳到一个平台上,但如果他从底部或侧面与平台发生碰撞,我希望他反弹(我希望你明白我的意思)想要的意思)。

所以,要做那样的事情,我需要能够检测到这两个对象确切的碰撞位置 - 我想到的唯一解决方案是将每个平台的坐标保持在某个数组中并将它们与characeter的位置evertime他跳了,但它似乎不正确。有没有更好的方法来解决这个问题?

我将不胜感激任何建议。

PS。对不起我的英文

2 个答案:

答案 0 :(得分:0)

您可以使用flixelflashpunk等游戏库。他们都很棒。

基本上,您需要遍历角色可能碰撞的所有对象。您可以使用.hitTestObject()来粗略确定您的角色是否与任何对象发生碰撞。然后,您可以在舞台上获取角色的坐标和尺寸,并将它们与命中对象的坐标和尺寸进行比较,以确定方向。

所以在伪代码中

for each (var platform:DisplayObject in platforms) {
    if (character.hitTestObject(platform)) {
        if (collideFromBottom || collideFromSide) { 
            // allow movement 
        }
        if (collideFromTop) { 
            // stop downward velocity 
        }
        break; // might as well, as you have detected the collision
    }
}

CollideFromBottom会将角色的顶部与平台的底部进行比较。请记住,作为精灵,玩家和平台都有[x,y]属性和[宽度,高度],允许您确定坐标。

P.S。应该在gamedev.stackexchange.com

询问这个问题

答案 1 :(得分:0)

我建议您使用Box2D之类的物理引擎( 看看这些例子,而不是从头开始创建一些基于hitTest colision的游戏 您遇到严重的代码/设计问题并将项目搁置一旁的可能性很大。

互联网上有很多很好的教程,这里有一个很好的资源 - 使用Box2d创建一个侧滚动游戏:

  1. Part 1
  2. Part 2