【Unity 2D】GameObjectにタッチ処理を実装する

  • |
【Unity 2D】GameObjectにタッチ処理を実装する
   

第14回目は、「個別のオブジェクトに関するタッチ処理です」。
以前[【Unity NGUI】個別のオブジェクトにタッチ処理を実装する。 | albatrus.com]という記事を書いたのですが、一部上手くいかない部分があり、再度色々と考えました。
何とか形にすることができたので、改めてブログに書いていきたいと思います。

前回:【Unity 2D】スワイプでオブジェクトを回転させる


個別のオブジェクトに関するタッチ処理です

まずは、例としてこのようなモノを作成しました。

2014-9-12-fdsadao


2014-0912-fdsa

コード

空のGameObjectに以下のようなスクリプトを作成します。


このコードを書く際に苦労したことを書きます。

オブジェクトがあるかどうか判定する

RaycastHit2Dというクラスを使えば判定ができます。
やりたいことは、わかっているのですが、どうすれば実装できるかに時間がかかります。
[Physics2D.Raycast]の第2引数に注意です。


タッチした際にそこにオブジェクトがあるか

何か2度手間のような気がするのですが、この判定を入れないと上手く動作しませんでした。
タッチしていないのに、オブジェクトが消えてしまう現象が起こります。
オブジェクトから、[Collider2D]の範囲を取り出してタッチした位置と比較をしています。


最後に

このように、個別にタッチ処理を書くのではなく、ゲーム全体を管理するManager的なオブジェクトを作成し、そこでタッチ処理を管理すると上手くいきました。
便利な関数やクラスがUnityには用意されているのですが、それを調べるのがとても大変です。


Cocos2d-xスマートフォン2Dゲーム開発講座 Cocos2d-x 3対応 (SMART GAME DEVELOPER)Cocos2d-xスマートフォン2Dゲーム開発講座 Cocos2d-x 3対応 (SMART GAME DEVELOPER)
株式会社TKS2

翔泳社
売り上げランキング : 630

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...