082 ScreenToWorldPoint関数の注意点

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 );

この様に値を指定してあげると、意図した値が返ってくる様になります。