Explorar o código

风筝忍者可以复活

1243896040 hai 1 semana
pai
achega
e8316f6ca8

+ 2 - 0
ActionTowerDefense/Assets/Resources/Prefab/ESpirits/ESpirits_KiteNinja.prefab

@@ -1716,6 +1716,8 @@ MonoBehaviour:
   dropProbability: 100
   dropSoulAngle: 60
   lockingLogic: {x: 1, y: 2}
+  revivesNum: 2
+  revivesPos: {x: 10, y: 3}
   targetIsPlayer: 0
   lockingNum: 0
   lockCharacter: {fileID: 0}

+ 7 - 0
ActionTowerDefense/Assets/Scripts/Characters/AttributeStatus.cs

@@ -95,6 +95,13 @@ public class AttributeStatus : MonoBehaviour
     }
     [LabelText("¿¹ÐÔ")] public Resistances resistances;
 
+    public void Init()
+    {
+        stackingWoudsTime = 0;
+        stackingWords = 0;
+    }
+
+
     private void Awake()
     {
         character = GetComponentInParent<MoveCharacter>();

+ 1 - 0
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -129,6 +129,7 @@ public class MoveCharacter : Character
     public override void Init()
     {
         base.Init();
+        attributeStatus.Init();
         transform.localScale = Vector3.one;
         mecanim.transform.localPosition = Vector3.zero;
         mecanim.transform.localRotation = Quaternion.Euler(Vector3.zero);

+ 26 - 0
ActionTowerDefense/Assets/Scripts/Spirits/ESpirits_KiteNinja.cs

@@ -9,6 +9,8 @@ public class ESpirits_KiteNinja : Enemy
     [Title("ESpirits_Assassin属性")]
     [Tooltip("X为锁定玩家次数Y为锁定肉盾次数")]
     [LabelText("锁敌逻辑")] public Vector2 lockingLogic;
+    [LabelText("复活次数")] public int revivesNum;
+    [LabelText("复活范围")] public Vector2 revivesPos;
     public bool targetIsPlayer;
     public int lockingNum;
     private PlayerController player;
@@ -22,6 +24,30 @@ public class ESpirits_KiteNinja : Enemy
         ChooseLockingTarget();
     }
 
+    public override void OnState()
+    {
+        switch (state)
+        {
+            case CharacterState.Die:
+                revivesNum--;
+                if (revivesNum < 0)
+                {
+                    gameObject.SetActive(false);
+                }
+                else
+                {
+                    Init();
+                    transform.position += new Vector3(
+                        Random.Range(-revivesPos.x, revivesPos.x),
+                        Random.Range(-revivesPos.y, revivesPos.y),
+                        0);
+                }
+                return;
+        }
+        base.OnState();
+    }
+
+
     public override void ChangeState(CharacterState newState)
     {
         switch (state)