久々に Unity を触りました。
RayCast … 忘れてる… ^^;;
Qiita の記事を みながら実装してみました。
最初、この記事を参考にしようかな…と思ったけど…
継承よりインターフェイスのほうが使い勝手がよさげだと思ったので、こちらの記事を参考にしました。(同じ人ですけど…w)
ほとんど、記事のままですが、タップした・指を離したの RayCast部分を共通にして、オブジェクトがあればの処理を引数で指定するようにしてみました。
必要なクラスは、タップ処理用の「TouchHandler.cs」 と、インターフェイス用の 「TapBehaviour.cs」
、と インターフェイスを実装したクラス(自分の例では「BallTap.cs」としました)。
タップした位置からの延長線上にあるゲームオブジェクトを探す 「レイキャスト」処理は以下のようにしました。
該当のオブジェクトがあれば、引数で渡されたコールバックに返すようにしました。
Update() で タップした時、指を離した時 に、上記の「レイキャスト」処理する関数を呼び出し、コールバックでそれぞれの処理を行うようにしました。
あとは、 「TapBehaviour」インターフェイス を実装した 「BallTap」クラス 側で、 それぞれのメソッドを処理します。
全ファイルは以下の通りです。