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

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

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

■マウスボタンの状態を調べる

ゲームの入力としてマウスを利用することは非常に多いでしょう。マウスによる入力は、「マウスポインタの位置」と「ボタンのクリック」からなります(マウスホイールなどもありますが、まぁ今回は除外しておきましょう)。

これらの情報は、Inputオブジェクトのプロパティやメソッドを利用して簡単に取り出すことができます。まずは、マウスボタンの状態についてです。これにはいくつかの関数が用意されています。順に整理しましょう。


●ボタンの状態を得る
var 変数 = Input.GetMouseButton( 番号 );
マウスボタンの状態を調べるためのものです。引数に、調べたいマウスボタンの番号を指定しますこの番号は以下のようになります。

0 = 左ボタン
1 = 右ボタン
2 = 中央ボタン

返値は真偽値で、trueならばボタンが押された状態であり、falseならば離された状態であることを示します。


●ボタンの上下を調べる
var 変数 = Input.GetMouseButtonDown( 番号 );
var 変数 = Input.GetMouseButtonUp( 番号 );
マウスボタンを押したり離したりした時を調べるものです。GetMouseButtonDownは、ボタンを押し下げた時にtrueを返すものです。同様に、GetMouseButtonUpはボタンを離した時にtrueを返します。

このGetMouseButtonDownは、「ボタンを押していれば常にtrue」を返すのではありません。ボタンを押すと、そのときだけtrueを返し、以後は(押したままであっても)falseを返します。

同様にGetMouseButtonUpも、ボタンを離したときだけtrueとなり、それ以後はfalseになります。つまり、ボタンの状態を調べるのではなく、「押したとき、離したとき」を知るためのものなのです。

では、利用例を挙げておきましょう。マウスボタンの状態(UP/DOWNの表示)と、押していた秒数を表示するものです。マウスボタンを押し下げ、しばらくしてから離すと、押していた秒数を表示します。

このサンプルでは、GUI Textに表示をします。<GameObject>メニューの<Create Other>内にある<GUI Text>メニューを選んでGUI Textを1つ配置しておいて下さい。そして、JavaScriptのスクリプトを作成し、適当なGameObjectMain Cameraなどでいいでしょう)にスクリプトを設定して動かしましょう。

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

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

●プログラム・リスト●

#pragma strict

var btnflg = false;
var pressTime = -1;
var upTime = -1;

function Update () {
    var b = Input.GetMouseButton(0) ? "DOWN" : "UP";
    if (Input.GetMouseButtonDown(0)){
        pressTime = Time.time;
        btnflg = false;
    }
    if (Input.GetMouseButtonUp(0)){
        upTime = Time.time;
        btnflg = true;
    }
    if (btnflg){
        b += " (" + (upTime - pressTime) + "sec)";
    }
    var text:GameObject = GameObject.Find("GUI Text");
    text.guiText.text = b;
}

※関連コンテンツ

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