Swiftで遊ぼう! - 887 - Pathfindingを実際実装していきます
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- 初心者はここから!-> 50オヤジでもできるiOS開発
- 私の本業、オフィシャルなブログ-> Life-LOG
- Swift 3 対応
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の初期化ができました。
これだけです。