我有一个敌人类来处理我的怪物移动和攻击。在那个类中,我有另一个名为enemyMagic的类,它是一个空白的动画片段,作为我将制作的不同动画片段的大师类。
所以在敌人魔法类中,我添加了一个名为attack1
的动画片段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);
出于某种原因,敌人可以跟踪与平铺的x和y完全相同的数字,但它不会在平铺上添加它。它在屏幕上添加了它。我想这可能是因为它从敌人的x和y开始然后计算?
所以我的问题是如何才能让敌人的电影剪辑准确地获得拼贴的位置?
答案 0 :(得分:1)
你可以做两件事。首先,当你做一个普通的addChild()
时,孩子的基本坐标系就是它的父母之一,这是你的Enemy
实例,当然它在某个非零的地方。然后为它分配Main.tileset[k]
的坐标,该坐标具有不同的父级(很可能是Main
的实例)。这创造了你所说的距离。因此,为了在确切的磁贴上找到您的魔力,请使用this.globalToLocal(Main.tileset[k].localToGlobal(PZERO))
PZERO
为new Point()
常量(或写new Point()
而不是PZERO
,但这会创建另一个空的Point
对象,并会快速升级),或者直接使用未更改的坐标对正在攻击的磁贴执行addChild()
。