baobao
8/26/2014 - 11:48 PM

スクリーン座標をワールド座標に変換する From http://bao-bao.postach.io/

スクリーン座標をワールド座標に変換する From http://bao-bao.postach.io/

static public bool TryGetCoordinate (Vector3 mousePosition, Camera cam, out Vector3 worldPosition)
{
     // 3D上の座標を取得したい平面を生成
     Plane plane = new Plane (Vector3.up, Vector3.zero);
     // インプットスクリーン座標とカメラ位置を通る直線を求める
     Ray ray = cam.ScreenPointToRay (mousePosition);
     float depth;
     // 平面とrayが交差するかチェック
     // 第2引数は交差した際に距離(float)が返却される
     if (plane.Raycast(ray, out depth))
     {
          // ray.origin・・・rayの原点
          // ray.direction・・・rayの方向
          // 単位ベクトルに距離を乗算して原点座標を加算したものが平面と交差した座標となる
          worldPosition = ray.origin + ray.direction * depth;
          return true;
     }
     else
     {
          worldPosition = Vector3.zero;
          return false;
     }
}