做為Unity早期的經(jīng)典demo,一直從3.5以后沿用到4.7.x版本。但其內(nèi)部一些做法十分不合理。比如使用過多的根目錄,
創(chuàng)建怪物和玩家不用SpawnPoint。AI、CheckPoint的代碼實現(xiàn)過于隨意,代碼命名風格詭異等等。。
并且網(wǎng)上也有很多相關(guān)的學習文章,所以我精簡了一下,將一些有用的部分學習并記錄下來
1.主角武器部分
WeaponSlot為武器主要GameObject節(jié)點,里面有各種相關(guān)腳本。
其中瞄準線(LaserScope)通過LineRenderer實現(xiàn):
其Shader額外加了一個Noise效果,然后通過腳本改變uv位置和縮放。腳本為LaserScope,shader路徑AngryBots/FX/LaserScope
而映射在目標上的點使用面片,并根據(jù)每幀發(fā)射的射線取得法線方向修改位置和方向。實現(xiàn)也在LaserScope里
另外,為了防止每一幀多次取得射線導致的開銷,專門有一個腳本PerFrameRaycast緩存射線內(nèi)容,并且每幀更新。
function Awake () { tr = transform; } function Update () { // Cast a ray to find out the end point of the laser hitInfo = RaycastHit (); Physics.Raycast (tr.position, tr.forward, hitInfo); } function GetHitInfo () : RaycastHit { return hitInfo; }