ユーザ用ツール

サイト用ツール


wiki:unity:tips:082

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

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

wiki/unity/tips/082.txt · 最終更新: 2014/11/13 09:28 (外部編集)