我通过创建一个新类(Fireball.as)并在类名后键入“extends FlxSprite”,为火球创建了一个自定义 FlxSprite。在构造函数中,它调用了一个名为“shoot()”的函数,该函数将其指向目标并播放声音:
private function shoot():void {
dx = target.x - x;
dy = target.y - y;
var norm:int = Math.sqrt(dx * dx + dy * dy);
if (norm != 0) {
dx *= (10 / norm);
dy *= (10 / norm);
}
FlxG.play(soundShoot);
}
然后,我创建了一个数组来保存游戏状态(PlayState.as)中的所有火球:
public var fire:Array = new Array();
然后在我的 input() 函数中,当有人按下鼠标按钮时,它会在数组中推送一个新的火球:
if (FlxG.mouse.justPressed()) {
fire.push(new Fireball(x, y, FlxG.mouse.x, FlxG.mouse.y));
}
但是当我测试它时,它只播放声音,但没有出现火球。我猜火球在舞台外的某个地方,但我该如何解决呢?
如果有帮助,这里是 Fireball.as 的构造函数:
public function Fireball(x:Number, y:Number, tar_x:Number, tar_y:Number) {
dx = 0;
dy = 0;
target = new FlxPoint(tar_x, tar_y);
super(x, y, artFireball);
shoot();
}