Unity射線檢測的各種方法(不是原創)


1.普通射線檢測(一般用於檢測某一個物體)

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(ray.origin ,ray.direction , Color.red);
RaycastHit hit;
if(Physics .Raycast (ray,out hit,int.MaxValue,1<<LayerMask .NameToLayer ("layername")))
{
Debug.Log("檢測到物體");
}

2.直線射線檢測多個物體

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(ray.origin ,ray.direction , Color.red);
RaycastHit[] hit = Physics.RaycastAll(ray, Mathf.Infinity, 1 << LayerMask.NameToLayer("layername"));
if(hit .Length >0)
{
for (int i = 0; i < hit.Length ; i++)
{
Debug.Log("檢測到物體"+hit[i].collider.name );
}
}

3.球形射線檢測(一般用於檢測周邊物體)

int radius = 3;
Collider[] cols = Physics.OverlapSphere(this.transform.position, radius, LayerMask.NameToLayer("layername"));
if(cols.Length >0)
{
for (int i = 0; i < cols.Length; i++)
{
Debug.Log("檢測到物體" + cols[i].name);
}
}

畫出球形檢測范圍方法,可用

private void OnDrawGizmos()
{
Gizmos.DrawWireSphere(this.transform.position, 3);
}
————————————————
版權聲明:本文為CSDN博主「昵稱好難寫」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36274965/article/details/79456449


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM