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

Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 883 - Pathfindingの理解をすすめます

GameplayKitのチュートリアルを探していて、ちょっと興味深い記事を見つけました。

GameplayKit with Swift for Beginners — Tower Defense Game — Part 1: Gridは、タワーディフェンスタイプのゲームを作成するチュートリアルです。確かに目的物に向かって動いてくる敵キャラの動きをパス・ファインディングの機能を利用するのが打って付けです。

しかし、このチュートリアルは少々古いんです。iOS9でGameplayKitが新たに導入されたことなので、Xcodeも古いため、記述の通りに作業できません。

ちょっと工夫がひつようなので、Xcode 8で動くかどうか確認しながらコーディングしてみたのですが、解決できない問題点にいくつかぶち当たります。

分からない問題点を回避しながらプロジェクトを進めてみます。

Xcode 8で新規プロジェクトを立ち上げます。既にテンプレート選択画面から変更が加わっています。

f:id:yataiblue:20161219172225j:plain

iOSタブからApplicationの「Game」を選択します。これを選択することで、スーパービューに「SKView」クラスを持つ、GameViewControllerでコントロールできるテンプレートが用意されます*1

f:id:yataiblue:20161219172537j:plain

Xcode 8から「Integrate GameplayKit」を選択してプロジェクトに自動的に組み込むことができるんですが、まだGameplayKitが良くわかっていないので、マニュアルで導入するため、このマークは外します。

f:id:yataiblue:20161219172741j:plain

プロジェクトをセーブしたら立ち上がります。プロジェクトの設定部分で、「Portrait」のマークを外して、画面縦向きを非対応にします。ゲームは横向きにだけするんです。プロジェクト・ナビゲータをみると、色々なファイルが並んでいます。まず不要なものを消して行く作業です。

  1. Assets.xcassetsから「Spaceship」を削除します。
  2. GameScene.sksから「helloLabel」を削除して、「Scene」のアトリビュート・インスペクタにある「Color」から「Grid Color」を選択します。
  3. GameViewControllerからviewDidLoad()メソッド以外のメソッドを全て削除して、「scene.scaleMode = .aspectFill」を「scene.scaleMode = .resizeFill」に変更します。
  4. 最後に「GameScene.swift」の「didMove()」「touchesBegan()」「update()」の内容も全て消して、他のメソッドとプロパティも削除します。

ここでランします。

f:id:yataiblue:20161219175938j:plain

nodeが1つありますが、これがsceneだと思います。

ここまで。