【Unity3D】槍戰游戲—彈孔設置


  以子彈為原點,發射射線,如果射線檢測到障礙物,則返回射線與障礙物的碰撞點

  在該點處實例化出彈孔貼圖

 1 void Update () {
 2         transform.Translate (Vector3.forward * Speed * Time.deltaTime);
 3         //用射線檢測,子彈的碰撞,當物體在兩點之間產生的射線內時,算作發生碰撞
 4         //1.獲得射線的起點(原點)
 5         //2.獲得射線的方向
 6         //3.獲得射線的距離
 7         Vector3 oriPos = transform.position;//1.射線的起點
 8         Vector3 direction = transform.position - oriPos;//2.方向
 9         float ength = (transform.position - oriPos).magnitude;//3.射線的距離,取向量的大小
10         //光線投射碰撞
11         RaycastHit hitinfo;//存儲碰撞信息
12         //光線投射,檢測是否發生碰撞
13         bool isCillider = Physics.Raycast (oriPos,direction,out hitinfo,ength);
14 
15 
16         //在碰撞點生成彈孔貼圖
17         if (isCillider) {
18             //射線檢測到物體,執行以下動作    
19             int index = Random.Range(0,2);//隨機生成0||1
20             GameObject bulletHolePrefab = bulletHoles[index];
21             Vector3 pos = hitinfo.point;//撞擊點
22             pos.y += 0.5f;//向上移動,防止與物體平面重疊
23             GameObject go = GameObject.Instantiate(bulletHolePrefab,pos,Quaternion.identity) as GameObject;
24             //調整貼圖的方向
25             //使彈孔貼圖,貼於物體平面,與平面平行
26             go.transform.LookAt(hitinfo.point - hitinfo.normal);
27         }
28     }

 


免責聲明!

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



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