アクションゲームでプレイ中に一時停止したいのは屡々起こり得るところ、 それに思い至ったのはゲームに興じている最中に実感したなどというものではなく iPhoneゲームアプリ開発中のテストプレイで デバッグのため先に進めたい場面で話し掛けられるなどした際の話なのですが、 孰れ無駄にはならぬ機能でしょう。 其れが為に昨日2016年5月23日の本ブログ記事 SpriteKitでタッチボタン実装 でタップで反応する画像ボタンの実装を考えたのでした。
而してどうやらこうやら理想には遠かれど然るべき画像ボタンタップに反応する機能は実装がなったのでしたが ボタンがタップされたらゲームの進行を止めなければなりません。 所謂 ポーズ 機能です
開発機:MacBook Air(11-inch, Mid 2013)
MacOSバージョン:OS X 10.9.1
Xcodeバージョン:5
言語:Objective-C
関連アプリ:uPanda Breaks Out Fruits
アップル社純正の2Dゲーム用フレームワーク SpriteKit を採用していますから、ゲームに必要不可欠なこの機能は標準で提供されているのではないかと当たりを付ければ、 さてご本家アップル社では開発者用に提供するリファレンスサイトに於いて SpriteKit中にもゲーム画面の基本となるクラスのレファレンスページ SKView Class Reference が提供されており、此れを実現するに好適な機能を齎すクラスとそのプロパティが 以下の如く確り用意されていました。
paused propertyA Boolean value that indicates whether the view’s scene animations are paused.
Declaration OBJECTIVE-C
@property(nonatomic, getter=isPaused) BOOL paused
Discussion
If the value is YES, the scene’s content is fixed onscreen. No actions are executed and no physics simulation is performed.
Availability
Available in OS X v10.9 and later.
上記引用するところに依ればSKViewクラスに於いてブール値の此れがTRUEに設定されれば アニメーションはポーズ、即ち画面は固定化され 何者も動かず物理シミュレーションの影響も受けなくなる、と記されており、 望んだ機能が実現出来るのが判ります。 而してボタンがタップされた時にpausedプロパティがトグルするように実装したところ 先ずは想定通りの動きが得られたのでした。
この機能をアップル社のリファレンスサイトから探し出すに当たり Mac Developer Library での検索機能が有用ですので紹介すれば、 以下のページで入力窓に SKView として検索すれば容易に関連リファレンスページが得られるでしょう。
Mac Developer Libraryさて最後にSKView、pausedプロパティの要注意処ですが、 SpriteKitで提供されるアニメーション機能や物理シミュレーションは確かに一時停止してくれるのですが、 ゲームアプリ内で時間は生真面目にカウントされていますので update 処理は随時施される仕様に留意しなければなりません。 然もなければ時間の止まる中に自らの行動を進捗するキャラクターも生じ 混沌とした事態に頭を抱えることになるでしょう。
バージョン: 4.12
リリース: 2014年9月15日
更新: 2022年4月20日
サイズ : 10.7 MB
互換性: iOS 14.4 以降のiPhone、iPod touch に対応。および、macOS 11.0以降とApple M1 チップを搭載したMac に対応。