目標のゲームを作るために必要そうなものをメモ。
年内を目指していたけど、厳しそうなので年度内を目標に。
前回から少し時間が開いてしまいましたが、今回はキャラクターに話をさせてみます。
event.json
ファイルでデータを定義しています。
接触時のdelegateメソッドで、playerNodeがc1
という名前のNodeに触れた時に、メッセージの内容を表示するようにしています。
メッセージの表示は、新たに追加したSJMessageNodeに担当させています。
SKLabelNodeが複数行表示に対応していないため、行数分並べて表示するという泥臭い実装になっています。 特別なことをしていない上に無駄に長いため、引用はやめておきます。
無事、キャラクターに話しかけることができるようになりました。
次は他のシーンへの遷移を実装します。
ソースコード: sj-prototype-apps/SJRolePlaying at master · tnantoka/sj-prototype-apps
Sprite Kitには物理エンジンが組み込まれており、簡単に物理シミュレーションが利用できて便利です。
ただ、デバッグ表示用の機能がないため、どこにPhysicsBodyを追加したか、見た目では知ることができません。
そんな不満を解決してくれるのが、PhysicsDebuggerです。
早速使ってみます。
CocoaPodsに対応してるので簡単です。
CocoaPodsを初めて使う場合、これ以降.xcodeprojではなく、.xcworkspaceを開く必要があることに注意してください。
ヘッダをインポートして、描画対象のノードが作成される前に、init
を呼び、
drawPhysicsBodies
を呼びます。
今回は、SJMapNodeに追加してみました。
これで実行すると、以下のようにPhysicsBodyに赤枠がついて可視化されます。
手軽に使えて便利でした。
ただ、ちょっとコードに手を加える量が多いかなぁ、という印象。 まぁそれでも、毎回PhysicsBodyと同じ大きさのShapeNodeを作成して追加する、とかに比べればはるかに綺麗ですが。
あと、このライブラリに限った話ではないですが、デバッグドローのぶんNodeの数が増えて動作がもっさりになるので、常に使用しながらの開発は厳しいかもしれません。
しばらく使って様子を見てみようと思います。
今日はマップ内に他のキャラクターを表示してみます。
前回はSJCharacgterNodeの中に定数でいろいろと持たせていましたが、
characters.json
というファイルで定義するようにしました。1
マップデータでどこに配置するか指定します。
SJMapNode内で、cから始まるデータの場合はキャラクターを生成するようにします。
SJCharacterNodeではjsonから設定を読み取ります。 この値を定数の代わりに使います。
完成です。
相変わらず全然お店ではないですが、見た目はゲームっぽくなってきました。
次は会話を実装する予定です。
ソースコード: sj-prototype-apps/SJRolePlaying at master · tnantoka/sj-prototype-apps
Objective-C的にはplistを使うのが定石だと思いますが、個人的にplistが苦手なのでここではJSONにしています。 ↩
ついにリリースされましたね。
正直なところ、そこまで魅力は感じていなかったんですが、まさかの無料ということで早速アップグレードしました。 今まで作ったサンプルが、最新版のXcodeでも問題なく動いていて一安心です。
残念ながら、このタイミングでも、日本語ドキュメント - Apple DeveloperにSprite Kit Programming Guideは追加されませんでした。 こうなると、しばらくは翻訳されなさそうです…。
NDA期間も終わったことだし、今後は機会があればMac向けの情報も扱っていきたいと思います。