0

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

所以,要做这样的事情,我需要能够检测出这两个对象到底在哪里发生碰撞——我想到的唯一解决方案是将每个平台的坐标保存在某个数组中,并将它们与角色的位置进行比较他跳了起来,但这似乎不太对劲。有没有更好的方法来解决这个问题?

我将不胜感激任何建议。

PS。对不起我的英语不好

4

2 回答 2

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 将比较您角色的顶部与平台的底部。请记住,作为 Sprite,玩家和平台都具有 [x,y] 属性和 [width,height],允许您确定坐标。

PS这个问题应该在gamedev.stackexchange.com上问过

于 2012-06-28T12:35:41.790 回答
0

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

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

  1. 第1部分
  2. 第2部分
于 2012-06-28T15:10:26.813 回答