Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Unity - Camera.main.ScreenToWorldPoint(Input.mousePosition)でうまくいかない件 -

Vector3 MousePos = Input.mousePosition;
でMousePos.xやMousePos.yの値の変化が取れるのに、
Camera.main.ScreenToWorldPoint(Input.mousePosition);
ってやると値が変化しないというお話。

クリックしたときのマウスの位置を得たい。
ここのサンプルソースをまねて使わせていただく。

このScriptをアタッチしたObjectがマウスのクリックでx方向に動くはず。
動かない。
値をConsoleに表示してみたが、
print(“setTapPos.x, .y, .z=” + setTapPos.x + “, ” + setTapPos.y+ “, ” + setTapPos.z);
どこをクリックしても常に同じ値だ。
以下のように変更すると

ちゃんと動く。
結論として
Camera.main.ScreenToWorldPoint(Input.mousePosition);
に何か問題がある。

調べてみたらここに関連しそうな内容があった。
zの値の有無でそうなるらしいと分かった。
カメラの表示モードがPerspectiveかOrthographicかによるらしいがサンプルのコードがリンク切れで確認できなかった。
ちなみに、PerspectiveになっていたのをOrthographicにしたらScreenToWorldPointがらみでエラーが出た。
つまり、行き詰まった。

こうすることにした。

そもそも、私の場合はまだ平面的なゲームで試している段階なのでz方向云々は関係なかった。
3次元になったらちょっと前にやったRayとか使えば良いんじゃないかと思う。
いずれにしても
Camera.main.ScreenToWorldPoint(Input.mousePosition);
は、しばらくお預けということに。

このエントリーをはてなブックマークに追加

Posted under: Unity


コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.