我正在尝试编写像Space Invaders这样的简单Flash游戏。当船射击时,我检查子弹是否用简单的方式击中敌人,如下所示:
if (bullet.hitTestObject(enemy)) {
var explosion = new Explosion(enemy.x, enemy.y);
stage.addChild(explosion);
explosions.push(explosion);
//Rest of logic like removing bullet and enemy from stage
}
我期待看到的是一个爆炸实例出现在围绕着敌人的围绕着某些地方,子弹击中了敌人并且它会留在原地。相反,爆炸似乎完全出现在其他地方并且朝敌人的方向移动(与子弹方向相反)。似乎我关于以上述方式成功获取坐标的假设是不对的。有没有其他方法可以至少获得它?它不一定是像素完美的,但我不希望爆炸出现在舞台的另一侧。
感谢您的任何建议。
答案 0 :(得分:0)
这不是要获取坐标,而是要记住添加孩子的位置。
如果移动容器,并将爆炸添加到其他容器中,则坐标将变得混乱 - 每个对象都有一个从0,0开始的内部坐标系。
最好的建议是手动了解差异的位置以及您孩子的位置。解决这个问题的常用方法是将所有孩子都添加到0,0。这将为您提供完全控制,并且可以了解Flash的工作原理。
如果您无法这样做,您可以随时使用globalToLocal和localToGlobal方法帮助您将这些坐标转换为全局(舞台)坐标,反之亦然。