unity3d研究1-點擊選中物體
阿新 • • 發佈:2017-06-17
鼠標 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-點擊選中物體