SpriteKitでタッチボタン実装

iPhoneアプリであれば画面をタッチして機能するボタンの実装は必須です。 簡単なように思えてこれがいざ実装しようとすると途方に暮れるのも iPhoneアプリ開発に馴染みない者に有り勝ちな光景かも知れません。

ゲームポーズ用タッチボタン画像

一つにはボタン実装には幾つか手法が有るにも関わらず其れさえ把握出来ていないからで、 ネットを繰れば名前が其れらしい UIButton を見付け試してみるも例えばタッチの検出やボタンを画像化するなど 思った通りにことが運ばないのが困惑に拍車を掛けたりするものです。

スポンサーリンク
日付:2014年2月9日
開発機:MacBook Air(11-inch, Mid 2013)
MacOSバージョン:OS X 10.9.1
Xcodeバージョン:5
言語:Objective-C
関連アプリ:uPanda Breaks Out Fruits

iPhoneでのゲームアプリ開発に当たって採用を決めていたのが アップル社純正の2Dゲームフレームワーク SpriteKit でした。 アップル社の開発者向けリファレンスサイトで Document Revision History を見れば2013年9月製と未だ2014年も明けたばかりには新しいフレームワークでしたが、 Xcodeでネイティブ開発するに当たりアップル社純正は ゲームのようなリアルタイム処理がと高い応答性能が求められるパッケージに於いては有効な上、 継続性や不整合などのリスクが少ないと考えたからでした。

アップル社純正ならでは綺麗に Cocoa Touch フレームワークを継承している道理で UIButton クラスがあるならば其れを継承する SKButton クラスも見付かるのではないかと矯めつ眇めつ、 さていざ実装と意気込んでも詰まるばかりに更にネットを繰ってサイト @kitano_ow 's blog の2014年1月5日の記事を見付けます。

【Xcode5】Xcodeの使い方 SpriteKit 編 Vol10 〜 SpriteKitにおけるボタンについての考察〜

このページの情報をご覧じればご同意も受けられるでしょう、 ボタン一つにこんなに記述をしなければならないのか、 と言うのが正直な印象にて、 先ずはSpriteKitにはUIButton相当のボタンクラスの用意がなく SKNode を継承するクラス中から適当なものを選べ、と言うのですから 慣れぬ身には戸惑わざるを得ません。

タップするとゲームプレイを一時中断するボタンを目論見、 先ずは以下のように記述した次第。 コードの大凡はSKSpriteNodeのインスタンスとして spider.png画像を使ってpauseButtonと言う名のpauseButtonを拵えて 座標(280, 260)に透明度80%で配置する情報を持たせた上で 画面上に加えよ、となるものです。 即ちボタンの実装クラスとしてSKSpriteNodeを選択したのでした。

/* ポーズボタン */
SKSpriteNode *pauseButton = [[SKSpriteNode alloc] initWithImageNamed:@"spider"];
pauseButton.position = CGPointMake(280, 260);
pauseButton.alpha = 0.8f;
pauseButton.name = @"pauseButton";
[self addChild:pauseButton];

以上にては未だ未だ画面上に眠た気な蜘蛛が表示されたのみで 此れをタップした際にゲーム画面がポーズする効果が得られればなりません。 ポーズする効果以前にタップの検出が問題になるのでした。 斯うした状況で繰ったネットから拾い出したのが本ブログ2016年5月22日の記事 アプリ開発の参考書籍と実参考サイト にもご登場たまわった @tnantoka 氏の運営せる SpriteKit.jp : Sprite Kit 日本語情報サイト にて又もや実製作されたゲームに付随せる分かり易い解説に助けられたのでした。

サンプルゲーム - SpriteKit.jp

要諦はページ内の 操作 項目に記されており、タッチを検出するメソッド touchesBegan で求めたタップ部分の座標が用意し、ここで指定した名前のボタンインスタンス内に 包含されるや否やで処理を決めよ、と言うものです。 この情報は先の参考サイトを見返せばページ内の 1.SceneのtouchesBegan/touchesEndなどを利用する。 項目に記される内容と誠に宜しく符合するもので どうやら此の如き面倒な処理を用いざるを避け得べからず、 と言った諦念と共にもう少し良い方法を把握する迄は、 ボタンが増えて込み入った際には記述が面倒になるのは容易に予想されはすれど 当該手法にての実装を余儀なくされたのでした。

uPanda Breaks Out Fruits
無料:カテゴリ: ゲーム:4+ 評価
バージョン: 2.0(更新: 2015年12月1日)
サイズ : 10.0 MB
互換性: iOS 7.1 以降。iPhone、iPad、および iPod touch に対応。
スポンサーリンク

「SpriteKitでタッチボタン実装」への1件のフィードバック

コメントは受け付けていません。