RayCast

久々に Unity を触りました。

RayCast … 忘れてる… ^^;;

Qiita の記事を みながら実装してみました。

 

最初、この記事を参考にしようかな…と思ったけど…

# 序某所で、Unityのスクリプトを読んだときになんか違うんじゃないかと思ったのでメモ。そのスクリプトは、タッチイベントを受け取りたい各GameObjectがそれぞれUpdate()内でRayを撃ってたわけだけど、それだと、...

 

継承よりインターフェイスのほうが使い勝手がよさげだと思ったので、こちらの記事を参考にしました。(同じ人ですけど…w)

# はじめにUnityでボタンを使う場合、OnGUI()関数を使うやり方があるが、そうではなくGameObjectをタッチしたときになんらかのアクションを起こすようにしたい。そのためのスクリプトを書いてみた。# 基本方針...

 

ほとんど、記事のままですが、タップした・指を離したの RayCast部分を共通にして、オブジェクトがあればの処理を引数で指定するようにしてみました。

 

必要なクラスは、タップ処理用の「TouchHandler.cs」 と、インターフェイス用の 「TapBehaviour.cs」
、と インターフェイスを実装したクラス(自分の例では「BallTap.cs」としました)。

 

タップした位置からの延長線上にあるゲームオブジェクトを探す 「レイキャスト」処理は以下のようにしました。
該当のオブジェクトがあれば、引数で渡されたコールバックに返すようにしました。

 

Update() で タップした時、指を離した時 に、上記の「レイキャスト」処理する関数を呼び出し、コールバックでそれぞれの処理を行うようにしました。

 

あとは、 「TapBehaviour」インターフェイス を実装した 「BallTap」クラス 側で、 それぞれのメソッドを処理します。

 


全ファイルは以下の通りです。

 



Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です