【Unity】マウスが左・右クリックされたときの処理を設定できるメソッド

  • Unityでマウスを押したときの処理を設定したいなぁ

という悩みを解決します。

●処理を設定できるメソッド

Input.GetMouseButtonDown マウスをクリックした瞬間にtrueを返す
Input.GetMouseButtonDown(0) 左クリックした瞬間にtrueを返す
Input.GetMouseButtonDown(1) 右クリックした瞬間にtrueを返す
Input.GetMouseButtonDown(2) 中ボタンクリックした瞬間にtrueを返す
目次

Input.GetMouseButtonDownはクリックした瞬間にtrueを返す

このメソッドを使うことによって、マウスをクリックした瞬間にtrueを返します。

例:右クリックするとspeed変数の値を3にする

if (Input.GetMouseButtonDown(1))
{
this.speed = 3;
}

とりあえずクリック時の処理を設定できるメソッドです。

実際に
「Input.GetMouseButtonDown」を使ってみよう

●流れ

  1. オブジェクトを設置する
  2. オブジェクトにスクリプトをアタッチ
  3. スクリプトの中身を書く
  4. 実行する

2Dでやっていますが、3Dでももちろんできるので安心してください。またオブジェクトに立方体(正方形)を使っていますが、なんでも構いません。

オブジェクトを設置する

Input.GetMouseButtonDownの説明

●オブジェクトを設置する

【Hierarchyウィンドウ】→【Create】→【3D Object】→【Cube】

オブジェクトにスクリプトをアタッチ

Input.GetMouseButtonDownの説明

●スクリプト作成

【Cube選択】→【Inspector】→【Add Component】→【New Script】→【Test】

スクリプト名はテストにしておきますね。なんでもよろし。アタッチしなければ使えません。

スクリプトの中身を書く

Test.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{

    float speed = 0;  // 変数宣言

    // Use this for initialization
void Start()
{

    }

    // Update is called once per frame
void Update()
{
        // マウスの左ボタンを推したらスピード向上
        if (Input.GetMouseButtonDown(0))
        {
            this.speed = 0.1f;
        }

        // オブジェクトをx軸に移動
        this.gameObject.transform.Translate(this.speed, 0, 0);

        // 減速
        this.speed *= 0.98f;
}
}

Input.GetMouseButtonDown(0) 左クリックした瞬間にtrueを返す
this.gameObject.transform.Translate(this.speed, 0, 0); アタッチされているゲームオブジェクトを取得してx軸に移動するようにいる

Projectウィンドウの【Test】スクリプトをダブルクリックして、スクリプトをかいていきましょう。

        // マウスの左ボタンを推したらスピード向上
        if (Input.GetMouseButtonDown(0))
        {
            this.speed = 0.1f;
        }

ここで【Input.GetMouseButtonDown】を使っていますね。左クリックをすると、speed変数の値が0.1になるように設定されています。

        // オブジェクトをx軸に移動
        this.gameObject.transform.Translate(this.speed, 0, 0);

アタッチされているオブジェクト【Cube】を取得して、x軸にspeed変数の値だけ移動するようにしていますね。

        // 減速
        this.speed *= 0.98f;

一生移動し続けてもしょうがないので、減速させています。

実行する

Input.GetMouseButtonDownの説明

X軸方向に動いていますね。

ちなみに

Test.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{

    float speed = 0;  // 変数宣言

    // Use this for initialization
void Start()
{

    }

    // Update is called once per frame
void Update()
{
        // マウスの左ボタンを推したらスピード向上
        if (Input.GetMouseButtonDown(0))
        {
            this.speed = 0.1f;
        }

        // オブジェクトをx軸に移動
        this.gameObject.transform.Translate(this.speed, this.speed, 0);

        // 減速
        this.speed *= 0.98f;
}
}

このようにすると

Input.GetMouseButtonDownの説明

x軸方向にもY軸方向にも行くよ。

まとめ

Input.GetMouseButtonDown マウスをクリックした瞬間にtrueを返す
Input.GetMouseButtonDown(0) 左クリックした瞬間にtrueを返す
Input.GetMouseButtonDown(1) 右クリックした瞬間にtrueを返す
Input.GetMouseButtonDown(2) 中ボタンクリックした瞬間にtrueを返す

当然、2Dでも使えます。

あれっ、Input.GetMouseButtonDownの説明より、移動させる方法の記事になってる!!!

ちょっとぶれましたねぇ。

とりあえずマウスをクリックして、なにかの処理を行うように設定できることはわかっていただけたと思います。

自分で応用して使ってみてくださいね。

あともしUnityでのサンプルゲームをお探しなら、【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろうでゲームを作ってみてくださいね。

あわせて読みたい
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】 ▼この記事を先に見ておきましょう▼ https://miyagame.net/basis-cs/ 当サイトではUnityでのサンプルゲームを作成することができます。Unityでゲームを作っていきましょ...

マウスクリック時の処理

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次