[ Unity 2D ] 教學 #04 – 滑鼠事件、鍵盤事件

標籤: , ,

Unity中事件被簡化的十分方便,如同Start()與Update()一樣只要打上函數名稱就可以了。

滑鼠的相關事件中較常用的有以下幾種:

  • OnMouseDown – 滑鼠點擊事件:在滑鼠點擊物件時會觸發
  • OnMouseDrag – 滑鼠拖曳事件:在滑鼠點擊後「按住」滑鼠時會觸發
  • OnMouseUp – 滑鼠放開事件:在滑鼠點擊後,放開滑鼠時會觸發
  • OnMouseEnter – 滑鼠進入事件:在滑鼠進入物件的碰撞區時觸發
  • OnMouseExit – 滑鼠離開事件:在滑鼠離開物件的碰撞區時觸發
  • OnMouseOver – 滑鼠停滯事件:在滑鼠停留在物件的碰撞區時觸發

在使用滑鼠事件時必須搭配Collider(碰撞體)使用,在下一章節會詳細介紹碰撞體與碰撞事件,在屬性視窗中點擊Add Component(增加組件)後,輸入Box C就會跳出Box Collider與Box Collider 2D,由於我們是2D遊戲,因此選擇Box Collider 2D。

接著我們就可以來撰寫程式碼了,我在教學02的Move中加入OnMouseDown事件,讓小飛兵在被點擊時會回到原點。

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour
{
  void Start()
  {

  }

  void Update()
  {
    transform.Translate(Vector2.up * Time.deltaTime);//向上移動
  }
  void OnMouseDown()
  {
    transform.position = new Vector2(0, 0);//點擊時回到(0,0)
  }
}

若我想要讓小飛兵在滑鼠放開時往左邊移動1單位,我可以這樣打:

void OnMouseUp()
{
 transform.position = (Vector2)transform.position + new Vector2(-1, 0);
 //讓物件位置從現在位置往左方移動一單位
}

由於transform.position是Vector3,要與Vector2做運算的話必須將Vector3轉型成Vector2。

鍵盤事件就與Start()、Update()、滑鼠事件不太一樣了,需要從程式碼去判斷是否有鍵盤事件。

程式碼範例如下:

if (Input.GetKey(KeyCode.LeftArrow)){}

在Input這個類別中有三種鍵盤事件

  • GetKey – 按住按鍵:按著按鍵時會傳回True
  • GeyKeyDown – 按下按鍵:按下按鍵時會傳回True
  • GetKeyUp – 放開按鍵:放開按鍵時會傳回True

而KeyCode就是按鍵ABCD等等,一般會把按鍵事件寫在Update()底下,例如我要讓小飛兵可以由鍵盤控制移動,我可以這樣寫:

void Update()
{
 if (Input.GetKey(KeyCode.LeftArrow))
 {
    transform.Translate(Vector2.left * Time.deltaTime); //往左
 }
 if (Input.GetKey(KeyCode.RightArrow))
 {
    transform.Translate(Vector2.right * Time.deltaTime); //往右
 }
 if (Input.GetKey(KeyCode.UpArrow)) 
 {
    transform.Translate(Vector2.up * Time.deltaTime); //往上
 }
 if (Input.GetKey(KeyCode.DownArrow))
 {
    transform.Translate(Vector2.down * Time.deltaTime); //往下
 }
}

滑鼠事件與鍵盤事件在Unity中都是非常常用的事件,是絕對必須要熟悉且活用的。

本次教學就到這裡結束!

[ Unity 2D ] 教學 #05 – 物件創造、物件銷毀



相關文章

教學 #06 – 碰撞器、觸發器、剛體(一)... 在Unity中,碰撞機制大致上有兩個重點: Collider(碰撞器)、Trigger(觸發器)、Rigidbody(剛體) 這篇教學文中較多文字上的解說,若是Unity的新手建議好好耐...
教學 #15 – 發佈設定 點擊工具列中的File -> Build Settings 開啟發佈設定的視窗 開啟後會看到一大堆選項跟按鈕可以點,很明顯的左下角是發佈的平台,比較值得一提的有 ...
如何用UGUI製作簡易HP條 Unity的UGUI是很方便的UI工具,這篇文章會教大家如何製作簡單的HP條,以及如何讓HP條顯示在物件的頭上。 這邊先提供兩個簡單的圖片供教學用 生命條 生命條的框...
教學 #00 – 安裝與事前準備 Unity是目前主流的開發引擎之一,他強大的地方在於免費提供給開發者使用,並且有良好的跨平台發行能力。雖然Unreal 現在也開放免費使用,但Unity先進入市場,使得網路上有大量參考資料,非常適合新...