libro
www.tuyano.com
JavaScriptではじめるUnityプログラミング入門

マウスクリックと画面の扱い (3/4)

作成:2014-05-17 10:52
更新:2014-05-17 10:52

■スクリーン座標とワールド座標

マウスポインタの位置を得るのはとても簡単でした。が、これをゲームの中で利用するのは、実はけっこう大変なのです。

ゲームのシーンというのは、「ワールド座標」と呼ばれる座標で位置を指定した仮想空間の世界として構築されています。

従って、マウスポインタの位置でシーンの中のゲームオブジェクトなどを操作しようとすると、まず「スクリーン座標のマウスポインタ位置を、そのシーンのワールド座標に変換する」という作業が必要となります。これを行うのが、Cameraの「ScreenToWorldPoint」です。
var 変数 : Vector3 = 《Camera》.ScreenToWorldPoint(《Vector3》;

引数に、スクリーン座標の位置を示すVector3を渡すと、そのカメラから見たワールド座標をVector3で返します。

注意したいのは、引数で渡すVector3の「z」値です。このzの値は、「カメラからの距離」を示すものと考えるとよいでしょう。スクリーン座標というのは2次元です。これをワールド座標に変換すると、その位置は、カメラから見てその地点を通る直線上のどこか、になります。zの値で「カメラからこれだけ離れた地点の位置」をいうことを指定するのですね。

下に簡単な利用例を挙げておきましょう。マウスの位置を、カメラから「5」だけ離れた地点としてワールド座標に変換した値を表示します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function Update () {
    var v:Vector3 = Input.mousePosition;
    v.z = 5.0;
    var v2 = Camera.main.ScreenToWorldPoint(v);
    var text:GameObject = GameObject.Find("GUI Text");
    text.guiText.text = v.x + ',' + v.y + '\n'
     + v2.x + ',' + v2.y;
}

※関連コンテンツ

「JavaScriptではじめるUnityプログラミング入門」に戻る