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

Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 882 - Pathfinding

Protocol指向プログラミングの勉強もしながら、少しGameplayKitの内容も見ています。

特にPathfindingに関心が向きました。GameplayKit Programming Guide: Pathfindingから少し勉強します。

Pathfinding

色々なゲームで共通して重要な概念がの1つが、ナビゲーションです。ボードゲームで考えれば、自分のコマを目的に応じて最適な方向に向かわせる必要があるし、アクションゲームでもアドベンチャーゲームでもキャラクターを迷路の中で動かす場合、逆に敵キャラをプレーヤーに立ち向かわせる時にも重要になります。ボードゲーム、迷宮、宇宙空間でも、何であれ共通して目的に向かって方向を決定するプロセスを、パス・ファインディング(Pathfinding)と呼び、GameplayKitは、パス・ファインディングのためのユーティリティのセットを提供してるんです。

これを使わない理由がないですね。パス・ファインディング・ユーティリティを使うために必要なものがあります。ゲームの中でナビゲーションする領域を「graph」と表現しますが、これに関連するクラスが山のようにあります。

GKGraphクラスと関連するAPIは色々あります。通れないエリアは、GKPolygonObstacleクラス、GKGraphNode2Dクラスは開かれた空間でゴールに向かう位置、そしてGKObstacleGraphクラスは、この2つのクラスを作ることができます。

SpriteKitと組み合わせて使用するなら、obstaclesFromNodePhysicsBodies:メソッドを使って、GKPolygonObstacleを作り出せます。

クラシカルなボードゲームに採用されているグリッドベースの領域は、GKGridGraphクラスとGKGridGraphNodeを使います。

ちょっと触りの説明だけです。