2014年8月5日 星期二

[unity]tag Detect


  • 大綱

現在有一場景,上面有很多遊戲物件,當滑鼠點擊畫面時,我們可以得到以下資訊:1、點擊位置的座標(screenspace、worldspace)2、是否點擊到物件3、點擊到哪個物件



  • 說明

場景中有很多物件,要做當滑鼠點擊物件時,知道是點到哪個物件。先將遊戲物件標籤,以供程式判斷;gameobject.tag

使用到Input.GetMouseButtonDown來觸發,接下來是將點擊到的位置由Screenspace轉成遊戲世界的World space
  • var ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
將由攝影機投射出光線,包含著位置與方向資訊。
  • Physics.Raycast(ray,hit);
如果攝影機射出的光線,有碰擊到遊戲物件(collider),回返回true,然後hit會得到光線與collider在哪個位置被碰到的物件資訊。
  • point = hit.point; (哪個位置)  
  • object = hit.transform.gameObject;(哪個物件)



  • Code : 

#pragma strict 
var Ball : GameObject; 
var object: GameObject; 
var point: Vector3; 
function Start () { 

}
 

function Update () {
 
if(Input.GetMouseButtonDown(0)) 
{ 
//Instantiate(Ball,Input.mousePosition,transform.rotation); 
//print(Input.mousePosition); 
var hit: RaycastHit; 
        var ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
if (Physics.Raycast(ray, hit)) 
{ 
point = hit.point; 
            object = hit.transform.gameObject; 
            //print(object.tag); 
            print(point); 
            Instantiate(Ball,point,transform.rotation); 
} 
else 
{ 
print("SHIT"); 
} 
} 
} 



  • Reference
Unity Document

沒有留言:

張貼留言