unity 2D游戲碰撞道具增加氣血效果&受傷掉血效果


代碼並不高效,僅以實現效果為目的.

被攻擊時調用(需要傳入HP預制件父級對象)

 1  //受到傷害時,掉血
 2     public void OnHurt(Transform HP)
 3     {
 4         print("觸碰到了怪物...");
 5         //遍歷父級對象
 6         for (int i = HP.childCount - 1; i >= 0; i--)
 7         {
 8             //創建臨時變量T,假設是最后一個元素
 9             int t = HP.childCount - 1;
10             //比對一致時,表示找到了一樣的子級
11             if (i == t)
12             {
13                 //說明還有血
14                 if (i > 0)
15                 {
16                     print(i);
17                     print("還有血...");
18                     //刪除最后一個對象(小紅心)
19                     Destroy(HP.GetChild(t).gameObject);
20                 }
21                 else
22                 {
23                     print("沒血了");
24                     //沒血了,重新加載當前場景
25                     ReStart();
26                 }
27             }
28         }
29     }

 

觸碰加血道具對象時調用(需要傳入HP預制件父級對象)

 1 //觸碰加血道具時,加血
 2     public void AddHp(Transform hp)
 3     {
 4         if (hp.childCount == 10)//滿血限制
 5         {
 6             print("滿血了");
 7             return;
 8         }
 9 
10         //臨時變量,存儲HP父級最后一個子級的坐標x
11         for (int i = hp.childCount - 1; i > 0; i--)
12         {
13             //創建臨時變量,用於存儲最后一個元素;
14             var t = hp.childCount - 1;
15             //相等時,表示找到最后一個元素
16             if (i == t)
17             {
18                 //獲取最后一個元素的x,Y坐標
19                 var posX = hp.GetChild(i).gameObject.transform.position.x;
20                 var posY = hp.GetChild(i).gameObject.transform.position.y;
21                 //Instantiate(要生成的對象預制件,坐標,旋轉,父級)x軸偏移值,可以自行更改
22                 Instantiate(hp_yzj, new Vector3(posX += 39f, posY, 1), Quaternion.identity, hp);
23             }
24         } 
25     }

 

效果


免責聲明!

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



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