Unity C# Physics.RayCast取得滑鼠點擊座標
- 此篇重點語法 * * * * *
→ Camera.main.ScreenPointToRay() ->這個語法是用來宣告射線的方向而起始點是從Camera投射出去,而投射的方向可以在括號中進行設定 。
e.g. Ray ray1=Camera.main.ScreenPointToRay(Input.mousePosition); //宣告一個以"camera"為起始點方向為"滑鼠點擊位置"的射線。
此篇效果 - 滑鼠座標的取得 * * * *
- 大概了解重點後,接下來進入完整教學 -
一、我們在場景中新增一個名為"BG"的Sprite物件,並且為其設定背景圖片,調整座標為X=0,Y=0,Z=0
二、幫BG新增一個BoxCollider元件(為了讓射線可以偵測到)
三、在場景中新增兩個Text UI,將其分別命名為Xpos(座標 X=300,Y=170),Ypos(座標 X=300,Y=100)
(這裡使用TextMeshPro UI,TextMeshPro使用方式:https://goo.gl/gmZYdt)
四、接著在場景中新增一個空物件叫做MouseDetector
五、再來我們新增一個名為MouseDetector的程式碼,並用下列程式碼做取代
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 導入TextMeshPro的功能
using TMPro;
public class MouseDetector : MonoBehaviour {
// 宣告一條射線
private Ray mouseRay1;
//RaycastHit是用來儲存被射線所打到的位置
private RaycastHit rayHit;
//用來接收滑鼠點擊座標的X、Y值
public float posX, posY;
//用來呈現座標的UI
public TextMeshProUGUI X, Y;
void Update()
{
if (Input.GetMouseButton(0))
{
//呼叫取得滑鼠點擊座標的函式
GetPos();
}
}
private void GetPos()
{
// 設定射線的行徑方向(螢幕-滑鼠點擊位置)
mouseRay1 = Camera.main.ScreenPointToRay(Input.mousePosition);
//如果射線以MouseRay1方向前進(螢幕到滑鼠點擊座標),有打到collider就會執行大括弧裡的程式碼
if (Physics.Raycast(mouseRay1, out rayHit, 1000f))
{
//儲存滑鼠所點擊的座標
posX = rayHit.point.x;
posY = rayHit.point.y;
//呈現滑鼠所點擊的座標
X.text = posX.ToString();
Y.text = posY.ToString();
}
}
}
六、接下來我們將剛新增的TextMeshProUI拖曳進MouseDetector的空欄位中
七、拖曳完成後,我們就可以透過TextMeshPtpGUI來監測我們滑鼠的點擊位置了(執行專案後按住滑鼠左鍵移動)
- 此篇重點語法 * * * * *
→ Camera.main.ScreenPointToRay() ->這個語法是用來宣告射線的方向而起始點是從Camera投射出去,而投射的方向可以在括號中進行設定 。
e.g. Ray ray1=Camera.main.ScreenPointToRay(Input.mousePosition); //宣告一個以"camera"為起始點方向為"滑鼠點擊位置"的射線。
★ 補充 :
TextMeshPro使用方式:https://goo.gl/gmZYdt
-------------------------------------------------------------------------------------------------------------------------------------
我們有粉絲專頁囉!!!
如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!
https://www.facebook.com/Straying2018/
● 如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !
● 對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!
● 有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家!
-Alex-
留言列表