關於Unity RaycastHit2D 的使用心得

RaycastHit2D 是Unity中對於2d的一個支持類,

從其名稱來看,RaycastHit2D是投射一段光線 並且擊打,沒錯,這個類是由方法 

        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction);
        //
        // Summary:
        //     Casts a ray against colliders in the scene.
        [ExcludeFromDocs]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance);
        //
        // Summary:
        //     Casts a ray against colliders in the scene.
        [ExcludeFromDocs]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask);
        //
        // Summary:
        //     Casts a ray against colliders in the scene.
        [ExcludeFromDocs]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask, float minDepth);
        //
        // Summary:
        //     Casts a ray against colliders in the scene.
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask, float minDepth, float max        Depth);
的返回值。

origin:起始點位置

direction:方向向量

distance:發射光線的距離

...其餘參數暫未研究

解釋的具體一點就是,在unity場景中的某個點發射一條射線,射線的長度和方向可以控制,返回這條射線首先碰撞到的帶有2d碰撞體的物體。

這裏要注意的是 如果使用Raycast() 方法就是返回第一個觸碰到的物體,如果想想返回所有哦觸碰到的物體,需要使用RaycastAll() 這個方法,次方法返回的是所有碰撞到的物體的集合。


使用Raycast() 需要非常小心,因爲往往我們在使用這個函數時候,目的常是判斷一個物體的某個方向是否有某物體,這個時候發射的射線的起始點不能設置爲這個物體的位置,如果不小心設置了,那就要注意了。如果你這個物體是有碰撞體的,這個射線永遠只會返回自己,因爲你是從這個物體的內部發射的射線。


我就是在使用過程中犯了這個錯誤,以爲發射的射線只會按自己的想法去尋找需要判斷的物體,這種想當然的做法是不對的。

發佈了43 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章