1.static function
raycast
(origin
: vector3
,direction
: vector3
,distance
: float =
mathf.infinity
,layermask
: int = kdefaultraycastlayers) : bool
乙個靜態的發射射線的方法,在場景中投下可與所有碰撞器碰撞的一條光線。
引數解釋:
origin:射線起始點
direction:射線方向
distance:射線長度
layermask:
只選定layermask層內的碰撞器,其它層內碰撞器忽略。
返回布林型別,當光線投射與任何碰撞器交叉時為真,否則為假。
(注意:如果從乙個球型體的內部到外部用光線投射,返回為假。 )這一點測試不成功!
2.static functionraycast(origin: vector3,direction: vector3,out hitinfo: raycasthit,distance: float = mathf.infinity,layermask: int = kdefaultraycastlayers) : bool
在場景中投下可與所有碰撞器碰撞的一條光線,並返回碰撞的細節資訊。
returns
當光線投射與任何碰撞器交叉時為真,否則為假。
使用c#中out關鍵字傳入乙個空的碰撞資訊類,然後碰撞後賦值。可以得到碰撞物體的transform,rigidbody,point等資訊。
詳細解釋一下:
然後設定物體的layer層級,在攝像機中設定camera.cullingmask,可以控制攝像機的渲染層級,用在射線上,可以控制射線碰撞什麼,不碰撞什麼。
//raycast hit
raycasthithit;
layermask mask = 1
<
void testray()
}
上面的例子是從當前指令碼所繫結的物體做標點向右發射長度100的射線,射線碰撞層級為8,其他層級忽略。
為了測試,我們在碰撞到物體後畫一條紅色線條,表示射線,停留一秒鐘。
上面這些是射線的一些基本操作。
static function
raycastall
(ray
: ray,
distance
: float =
mathf.infinity
, layermask : int = kdefaultraycastlayers) :
raycasthit
static function
raycastall
(origin
: vector3
, direction :
vector3
, distance : float =
mathf.infinity
, layermask : int = kdefaultraycastlayers) :
raycasthit
投射一條光線並返回所有碰撞,也就是投射光線並返回乙個raycasthit結構體。
Unity3D總結 關於射線碰撞
1.static function raycast origin vector3 direction vector3 distance float mathf.infinity layermask int kdefaultraycastlayers bool 乙個靜態的發射射線的方法,在場景中投下可...
unity3d關於碰撞問題
這個是我做忍者遊戲出現的問題,做個記錄也為以後有人遇到也可以借鑑。因為剛接觸unity,所以對其所知甚少,說錯的地方請指教。渲染幀的時間跟不上程式處理力速度的時間,所以產生了人物碰撞體碰到了牆,然後碰到了地面了,在渲染下一幀時,因為最後碰到的是地,所以發生碰撞 地面的事件,那它是怎麼回來的呢,應該是...
Unity3D 碰撞測試
碰撞測試這個再遊戲的開發中是很有必要的,當敵人的攻擊的時候,發生碰撞這時候就會造成一定的傷害,因此我們需要根據受到的傷害對使用者的生命值進行控制,因此碰撞的測試是 我們在遊戲的開發過程中需要的一種比較重要的資料。在unity中的碰撞測試有兩種,一種是碰撞,一種是觸發!一種屬於物理碰撞,一種屬於非物理...