読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 887 - Pathfindingを実際実装していきます

GameplayKitを使ったチュートリアルの理解をしようとしています。ゲームはあまりしませんが、タワーディフェンスタイプのゲームは知っています。iPhoneで遊んだこともあります。只今シンプルなタワーディフェンスタイプのチュートリアルに取り組んでいるところです。

今までにやったこと、SpriteKitを使って、sceneの上に碁盤の目状のnodeを並べました。そして、ゲームオブジェクト(Entity)に与える「描画」という機能を持ったComponentクラス、「VisulaComponent」を用意しました。

今日は、この碁盤の目状のゲームボードで、タップしたところにタワー(やぐら)を出現させるメカニズムを組み込みます。そして、敵キャラが、ゲームボードの端から出現して、反対側に向かって動くところに「やぐら」を置いても、Pathifinding機能を使って、新しいルートを再計算させるという仕組みです。

まずルート計算をするために、領域が必要です。当然、GameSceneクラスがその領域情報を持っています。次のプロパティをGameScene.swiftに加えます。

var graph: GKGridGraph<GKGridGraphNode>!

これの初期化は、「didMove()」メソッドを使います。createGrid()メソッドの下に次のコードを加えます。

graph = GKGridGraph(fromGridStartingAt: int2(0, 0), 
                                 width: Int32(width), 
                                height: Int32(height), 
                      diagonalsAllowed: false)

このメソッドをcreateGrid()メソッドの後で呼ぶため、sceneにnodeを加えた情報を使います。最後の「diagonalsAllowed」は、グリッド間を交差して動けるかどうか判断させています。falseにすると交差して動けないということです。

これで、Pathfinding機能が有効な領域となるgraphの初期化ができました。

これだけです。