うにty生活

UnityChanを生活させたい

マウスイベントとかいう便利すぎるメソッド #14

 

どうもラブヘイトです

 

今回はマウスイベントメソッドを使って

タンスを開くイベントを作成していきます

f:id:tubakihimeLoveHate:20181203215219g:plain
完成図↑

 

 

◆マウスイベント

マウスイベントとは、オブジェクトをマウスでタップや通過するなど動作で、それが起因となって実行されるのがマウスイベントメソッドのことです

はじめたばかりの人は結構知りたい情報なのではないでしょうか?

 

私も2DならButtonUIとかEventSystemでイベントを起こしていたのですが

3Dはよくわからず、Canvasに透明なButtonを配置して擬似的にそのオブジェクトを押したかのように見せるというアホなことをしていました

(オブジェクトが移動するとButtonの位置も手動で変えなければいけないため

相当時間がかかりますし、正確ではありません)

 

つい最近、本でMonoBehaivourにマウスイベント関数があったことを知って驚愕しましたので紹介していきます

 

◆使い方

とても簡単です

 

まずプロジェクトビューで新しいスクリプトを作成します

そしてOnMouseDown()を加えて、マウスボタンを押した時に実行したい処理を記述します

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

public class tumbOpens : MonoBehaviour {
bool open = false;
    Vector3 offset = new Vector3(0,0,14f);

    // Use this for initialization
    void Start () {
    }
    
    // Update is called once per frame
    void Update () {
    }

    /// <summary>
    /// OnMouseDown is called when the user has pressed the mouse button while
    /// over the GUIElement or Collider.
    /// </summary>
    void OnMouseDown()
    {
     if(open){
            transform.localPosition -= offset;
            open = !open;
        }else{
            transform.localPosition += offset;
            open = !open;
        }
    }
}

タンスを開くなんてマニアックな処理を検索にかける人は少ないかと思いますが

一応処理内容も記述しておきますw

 

※メソッドの上のsummaryを見るとコライダー全体にマウスイベントが適用されるため、もちろんアタッチするオブジェクトにコライダーが設定されていないと使えません

 

このスクリプトをタンスの開戸全てにアタッチします

f:id:tubakihimeLoveHate:20181203215010p:plain

 

◆その他のマウスイベント

マウスで押す以外にも様々なイベントに対応している

 

  void OnMouseDrag()
    {
        //ドラッグ中のイベント
    }

    void OnMouseEnter()
    {
        //コライダーに入った時のイベント
    }


    void OnMouseExit()
    {
        //コライダーから出た時のイベント
    }

    void OnMouseOver()
    {
        //コライダーにマウスが載っている時のイベント
    }

 

これだけでもいろんなアプリが作成できます

こんなメソッドが最初からあったなんて・・・私も始めたばかりの時に知りたかったなぁ

 

 

というところで、うにty生活ブログ史上もっとも短い記事でした

それではまた