1. 程式人生 > >unity3d研究1-點擊選中物體

unity3d研究1-點擊選中物體

鼠標 poi shc obj mouse object count log main

方法1:OnMouseDown()只針對腳本掛載的物體有效

首先,要給 物體加上 碰撞器Collider

然後在物體腳本上加入

    void OnMouseDown()//只針對腳本掛載的物體有效
    {
        Debug.Log("jiance");
    }

方法2:檢測從屏幕發出的射線與物體發生碰撞,而這個發生碰撞的物體就是你選中的物體。

首先,要給 物體加上 碰撞器Collider

然後在物體腳本上加入

void MobilePick()  
{  
    if (Input.touchCount != 1 )  
        return;  
  
    
if (Input.GetTouch(0).phase == TouchPhase.Began) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); if (Physics.Raycast(ray, out hit)) { Debug.Log(hit.transform.name); //Debug.Log(hit.transform.tag);
} } } void MousePick() { if(Input.GetMouseButtonUp(0)) //首先判斷是否點擊了鼠標左鍵 { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //定義一條射線,這條射線從攝像機屏幕射向鼠標所在位置 RaycastHit hit; //聲明一個碰撞的點(暫且理解為碰撞的交點) if (Physics.Raycast(ray, out hit)) //如果真的發生了碰撞,ray這條射線在hit點與別的物體碰撞了 { Debug.Log(hit.transform.name);
//Debug.Log(hit.transform.tag); } } }

可見,在unity3d中,選中物體有一個必要條件,就是物體能發生碰撞。這個參數就是碰撞器Collider,Collider是發生物理碰撞的基本條件。

所以如果無法選中物體時,要檢查是否物體加了碰撞器。

方法如下:

GameObject gameObject = (GameObject)Instantiate(...);  
  
gameObject.name = "game_object";  
gameObject.AddComponent<MeshCollider>();  

unity3d研究1-點擊選中物體