Swiftで遊ぼう! - 882 - Pathfinding
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- 初心者はここから!-> 50オヤジでもできるiOS開発
- 私の本業、オフィシャルなブログ-> Life-LOG
- Swift 3 対応
Protocol指向プログラミングの勉強もしながら、少しGameplayKitの内容も見ています。
特にPathfindingに関心が向きました。GameplayKit Programming Guide: Pathfindingから少し勉強します。
Pathfinding
色々なゲームで共通して重要な概念がの1つが、ナビゲーションです。ボードゲームで考えれば、自分のコマを目的に応じて最適な方向に向かわせる必要があるし、アクションゲームでもアドベンチャーゲームでもキャラクターを迷路の中で動かす場合、逆に敵キャラをプレーヤーに立ち向かわせる時にも重要になります。ボードゲーム、迷宮、宇宙空間でも、何であれ共通して目的に向かって方向を決定するプロセスを、パス・ファインディング(Pathfinding)と呼び、GameplayKitは、パス・ファインディングのためのユーティリティのセットを提供してるんです。
これを使わない理由がないですね。パス・ファインディング・ユーティリティを使うために必要なものがあります。ゲームの中でナビゲーションする領域を「graph」と表現しますが、これに関連するクラスが山のようにあります。
GKGraphクラスと関連するAPIは色々あります。通れないエリアは、GKPolygonObstacleクラス、GKGraphNode2Dクラスは開かれた空間でゴールに向かう位置、そしてGKObstacleGraphクラスは、この2つのクラスを作ることができます。
SpriteKitと組み合わせて使用するなら、obstaclesFromNodePhysicsBodies:メソッドを使って、GKPolygonObstacleを作り出せます。
クラシカルなボードゲームに採用されているグリッドベースの領域は、GKGridGraphクラスとGKGridGraphNodeを使います。
ちょっと触りの説明だけです。