今までの敵キャラは左右に動くだけでしたが、それだけだと物足りないと思い、敵キャラで火の弾を発射するものを追加してみました。
火の玉を生成する
火の玉の生成のために以下のコードをGameSceneに追加しました。
func fireballSpawn(bee:Bee){ let absolutePosition = self.convert(bee.position, from: bee.parent!) let fireball = Fireball(pos: absolutePosition) self.addChild(fireball) fireball.fire() }
ハチの位置情報を引数にして火の玉をインスタンス化します。
生成した火の玉はGameSceneに追加し、fireで発射するようにしました。
敵キャラを管理する
ハチを引数にして火の玉を生成するコードは作成できました。
それではハチを引数にして渡すにはどうすれば良いでしょうか。
ノードをコピーする時にハチを取り出して配列に入れておきます。
for child in node.children{ if let bee = child as? Bee{ bees.append(bee) } }
次に、定期的に火の玉を発射させるために、GameSceneのupdate関数に以下を追加します。
if fireballTime == 0 || currentTime - fireballTime > fireballInterval { for bee in bees{ fireballSpawn(bee: bee) } fireballTime = currentTime }
update関数の中では、ハチが死んだ時に配列から削除するコードも追加しておきます。
//死んだハチを配列から消す。 bees = bees.filter{$0.parent != nil}
こんな感じ。