ScreenToWorldPointはスクリーン座標をワールド座標に変換する便利な関数なのですが落とし穴があります。 例えば、マウスクリックした場所にオブジェクトを移動させたい時には
if ( Input.GetMouseButtonDown(0) ) { Vector3 mousePos = Input.mousePosition; Vector3 objPos = Camera.main.ScreenToWorldPoint( mousePos ); }
とすると思いますが上手くいきません。マウスクリックする座標を変更しても、objPosにはいつも同じ値が返ってきしまいます。 これは、元々スクリーン上のマウス座標は2次元でありでZ軸の値を持っていないため(型だけVector3)です。 従ってZ軸を指定してあげる必要があります。
Vector3 mousePos = Input.mousePosition; mousePos.z = 10.0f; Vector3 objPos = Camera.main.ScreenToWorldPoint( mousePos );
この様に値を指定してあげると、意図した値が返ってくる様になります。