初めてWatchKitを使ったアプリでしたが、無事審査を通過しました。
所謂ライツアウトのクローンです。
無料です。暇潰しによろしければどうぞ。
ソースコードは以下で公開しています。(Swiftです)
最初は各パネルをクリックしたら反転するアニメーションをさせるつもりだったため、Flipと付けて、後は響きで決めました。日本語は英語名を元に適当に翻訳しました。
その後、WatchKitでのアニメーションはかなり面倒(連番の画像を用意しないといけない)ということがわかり断念しましたが、名前はそのままにしました。
今回のアプリは全体をUIKitで構築し、ホーム画面の一部にSKViewを貼って、そこだけSpriteKitにしました。
該当のSceneのソースはこちらです。
LightsOutScene.swift
ゲームのロジック部分はWatchKitでも使う必要があるため、LightsOut.swift というモデルを作り、Sceneとは別に実装しています。 (SpriteKitはiOSとOS Xに関しては「Universal」ですが、Watch OSでは動きません…。)
LightsOutScene
は、ライト数分のSKShapeNode
を持っています。
処理としては、タップされる度にその情報をLightsOut
モデルに渡し、その状態に合わせて各ノードを更新する、というシンプルなことしかやっていません。
WatchKit側を作った後だったのもあり、SpriteKitのお手軽さを改めて感じました。
以前から興味のあったRealmをスコアの保存部分に使っています。
該当のコードはこれだけで、CoreDataやFMDBを使うよりはるかに簡単(おまじないが少なくて済む)でした。 ゲームも何かとデータベース必要なので、これからはRealmを使っていく予定です。
モデルはこの数行を書くだけです。
Score.swift
スコア保存処理はこんな感じで書けます。
iOS 8からポップオーバーがiPhoneでも使えるようになったということで、今回レベル選択に使ってみました。
簡単でよかったです。
以下のページが参考になりました。
Apple Watch対応ゲーム、楽しいのでまた何か作ろうと思います。
WatchKit関連でハマったことなどはQiitaに書いています。
それではよろしくお願いします。