|
unity2d场景判定鼠标点击在对应的物体上
不管那个方法,都必须先确保你的sprite或者其他GameObject有Collider2D组件
1.Raycast法
原理相同于3D中得Raycast法,具体使用略有区别。
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit.collider != null)
{
Debug.Log ("Target Position: " + hit.collider.gameObject.transform.position);
//and do what you want
}
2.Overlap法
个人觉得这个方法对于2D更合适一些,判断点击的点落在了哪些collider中--常用。
Collider2D[] col = Physics2D.OverlapPointAll(Camera.main.ScreenToWorldPoint(Input.mousePosition));
void Update()
{
//实时检测鼠标是否移动到物体上
col = Physics2D.OverlapPointAll(Camera.main.ScreenToWorldPoint(Input.mousePosition));
if (col.Length > 0)
{
foreach (Collider2D c in col)
{
if (c.gameObject.name == "GameObject_Name")
{
//移动到对应物体时同时按下鼠标左键时执行
if (Input.GetMouseButtonDown(0))
{
Print("调用对应的方法即可");
}
}
}
}
|