640*960 のプロジェクトをテストする際、GameView のサイズを狭くしてテストすると
マウス座標もそのサイズに依存して変わっているような状態になって困ったのでメモ。
// カメラオブジェクトを取得する // 今回の例は NGUIのカメラを指定しているが、他のカメラの時も名前を合わせればよい GameObject obj = transform.Find("/UI Root (2D)/Camera").gameObject; // マウス座標を縦横各種 0~1.0f の範囲に変換 Vector3 mpos = (obj.GetComponent<Camera>()).ScreenToViewportPoint ( Input.mousePosition ); // スクリーンサイズにその範囲をかければスクリーン上の座標が求まる float xpos = mpos.x * PlayerSettings.defaultScreenWidth; float ypos = mpos.y * PlayerSettings.defaultScreenHeight;
こうすると GameView のリサイズを気にしないでも大丈夫っぽい。
UnityEditor 内のクラスを使用しているが、iOS 実機でも動くのかは未検証。