使用射線碰撞攻擊目標

2021-07-14 12:45:56 字數 1075 閱讀 8696

實現效果:按q發射一條不存在實體碰撞的射線,進行碰撞檢測達到開槍的效果

一:新增鍵盤事件q

二:獲取槍(上圖mesh2p)的座標位置,準心的骨骼名稱

三:獲取乙個自己(self)的向量,乘以射線的長度(5000)

一:新增射線方法:linetracebychannel

1.在drawdebugtype裡,預設none不顯示射線,

foroneframe發射一條射線,

forduration發射多段射線,比如說實現多段射線組成的拋物線。

damagedactor碰撞目標

basedamage基本傷害

1.傷害事件,數值必須不等於0,anydamage事件才能被觸發

2.場景裡目標碰撞的物件裡,必須有射線。

三:新增乙個**的特效

1.在槍枝骨骼前端新增插槽

2.角色藍圖裡,新增乙個粒子的變數muzzleeffect

3.新增乙個建立粒子的方法spawnemitterattached

4.在acttach point name寫上要繫結特效的骨骼插槽位置

5.注意,這裡的向量,要獲取槍枝自身的向量,不然特效會出現單一方向

最終效果如下圖:

unity射線檢測碰撞

使用普通的碰撞體檢測,檢測時不連續的,是每隔0.02秒進行的離散檢測,這樣在被檢測的物體速度比較快時,就會由直接穿過物體的可能,這個時候,就需要使用射線檢測了。為了實現高速狀態下的碰撞檢測,要使用連續的射線來完成這樣乙個功能。使用 new ray建立射線new ray 發射位置,發射方向乘上發射速度...

Ray建立射線,碰撞檢測

建立射線,如下,表示只在2d layer下建立射線,表示只能檢測2d下的物件 ray ray camera.main.screenpointtoray input.mouseposition raycasthit hititem int layer 1 layermask.nametolayer 2...

Unity3D總結 關於射線碰撞

1.static function raycast origin vector3 direction vector3 distance float mathf.infinity layermask int kdefaultraycastlayers bool 乙個靜態的發射射線的方法,在場景中投下可...