Unity + Vuforia でターゲット画像上に表示されたオブジェクトをタップした時に、何か動作をさせたいときがあると思う。
普通に、CameraのScreenPointToRay()メソッドを呼び出した後に、Physics.Raycastを呼び出せばいいわけだが、全然反応しなくて困った。
気づくまでにだいぶ時間はかかったが、わかると単純なことだった。
カメラからターゲット画像上に表示されたオブジェクトまでの距離が、だいぶ遠いのである。
普段は、
if (Physics.Raycast(ray, out hit, 100)) {
GameObject selectedGameObject = hit.collider.gameObject;
// ...
}
↑のように、オブジェクトまでの距離を100〜200までぐらいを指定しているのだが、それはカメラからの距離が一定のオブジェクトだからなんとかなってるのである。
ARで表示されたオブジェクトは、もっと遠い位置にある。
とりあえず、Physics.Raycast()に指定する距離を1000ぐらいにしたらなんとかなった…というメモ。