2013年12月24日火曜日

Unityで複数カメラがあると、OnMouseDownなどが想定外の座標で反応する

Unityでゲーム作成していて、OnMouseDown,OnMouseEnter,OnMouseOver,OnMouseExit が
想定外の場所で反応することがありました。

意味不明な現象でしたが、原因は「カメラが複数あったこと」でした。

私の作り方では、まずシーン遷移をコントロールするために、
DontDestroyOnLoad で決して破棄されないオブジェクトを一つ作ります。
そのオブジェクトにくっついたスクリプトが
Application.LoadLevel や Application.LoadLevelAdditive を行うことで
制御を行っていたのですが、この「非破壊オブジェクト」は、何の気なしにカメラでやってたんですね。

そのおかげで、「制御されたシーンにおいてあるメインカメラ」と「非破壊オブジェクトとなったカメラ」の
ふたつがあることで、まったく想定外の座標でも OnMouseDown などが反応する、ということになってしまいました。



Unityには無害な空オブジェクトを作る Create Empty というメニューがありますので、
ちゃんとこちらを利用しましょう、という反省でした。

0 件のコメント:

コメントを投稿