[Unity]射線的簡單應用和對UGUI的檢測


最近做的小游戲,需要通過觸屏來控制移動,主要做法就是在Update中檢測Input.TouchCount,但是問題是會蓋住UGUI的Button事件,第一時間想到射線檢測

常用射線

Unity有射線類Ray和Physics.Raycast()Physics.Linecast()等,他提供強大的API,主要可以從某點發射射線,包括給射線長度和在哪一層檢測(LayerMask)

通常的應用就是鼠標點擊位置發射射線,對碰到的第一個物體做出反應(FPS游戲)

或者以角色為中心,向一個方向發射射線檢測是否在邊緣或者是否在地面上(比如向下發射一個很短的射線,如果碰到了地面則表示角色處於地面上而非落下或者跳起狀態)

但是這種射線要求被檢測物體必須有碰撞器(Collider)

UGUI的檢測

所以當想要用射線對UGUI檢測時,必須給UGUI綁定碰撞器

而除了加碰撞器外,還可以利用UGUI的EventSystem檢測

EventSystem.current.IsPointerOverGameObject();//此方法返回bool值

(如果檢測觸摸Input.Touch,參數傳入Input.GetTouch(0).fingerId)

此方法可以判斷是否點擊到了UI,但是被檢測UI必須勾選RayCast Target

當然還有很多檢測方法,比如重載Unity的一些接口如IPointerXXX系列


免責聲明!

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



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