0

我有一个 Enemy 类来处理我的怪物移动和攻击。在那个类中,我有另一个类名为enemyMagic,它是一个空白影片剪辑,用作我将制作的不同影片剪辑的大师班。

所以在enemyMagic 类中,我添加了一个名为attack1 的movieclip

public var attack1:Attack1 = new Attack1;    
       public function EnemyMagic() {
                ////////////CREATE THE TIMER//////////
                masterEnemyAttackTimer.addEventListener(TimerEvent.TIMER, mastertimer);

                ////////////ATTACKS/////////
                //TIER 1//
                addChild(attack1);

            }

而在敌人类中,我会在敌人攻击某个位置时添加敌人魔法。

for (var k:int = 0; k < Main.tileset.length; k++)
            {

                if (! Main.tileset[k].tileMiddle.hitTestObject(this.enemyVisionPoint))
                {
                    if (Main.tileset[k].tileHP !== 0)
                    {
                        attackoptions.push(Main.tileset[k]);
                    }
                    if (Main.tileset[k].tileMiddle.hitTestObject(Main.player.visionPoint))
                    {
                        addChild(enemymagic);
                        Main.tileset[k].outline.gotoAndStop("attack");
                        this.enemymagic.x = (Main.tileset[k].x);
                        this.enemymagic.y = (Main.tileset[k].y);
                        trace(enemymagic.x, enemymagic.y, Main.tileset[k].x, Main.tileset[k].y); 

由于某种原因,enemymagic 正在追踪与瓷砖的 x 和 y 完全相同的数字,但它没有将其添加到瓷砖上。它将它添加到屏幕之外。我想可能是因为它从敌人的 x 和 y 开始然后计算?

所以我的问题是我怎样才能让enemymagic 电影剪辑准确地到达瓷砖的位置?

4

1 回答 1

1

你可以做两件事。首先,当您执行普通操作时addChild(),子项的基本坐标系是其父项之一,即您的Enemy实例,它当然位于非零的某个位置。然后为它分配Main.tileset[k]具有不同父级的坐标(很可能是 的实例Main)。这创造了你所说的距离。因此,为了将你的魔法定位在确切的瓷砖上,要么使用this.globalToLocal(Main.tileset[k].localToGlobal(PZERO))wherePZERO是一个new Point()常量(或者写new Point()而不是PZERO,但这会创建另一个空Point对象并且会迅速升级),或者addChild()直接对你正在攻击的瓷砖执行未更改的坐标。

于 2013-07-28T04:20:59.497 回答