Эх сурвалжийг харах

变身刺客召唤大棒有概率暴击

LAPTOP-OM1V99U2\永远de小亡灵 1 жил өмнө
parent
commit
e99b10675b

+ 2 - 1
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Sword.prefab

@@ -639,11 +639,12 @@ MonoBehaviour:
   force: {x: 0, y: 0, z: 0}
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   changeHurt: 0
   repelValue: 0
   repelValue: 0
-  spiritsAttackEffect: {fileID: 0}
+  spiritsAttackEffect: {fileID: 7473170563405908938, guid: 8ad3c225050205945b10657aa300afd6, type: 3}
   offsetY: 1
   offsetY: 1
   hitRate: 1
   hitRate: 1
   Miss: {fileID: 6380148097413123628, guid: b0832b9907489bd44a617b760ccfd8c8, type: 3}
   Miss: {fileID: 6380148097413123628, guid: b0832b9907489bd44a617b760ccfd8c8, type: 3}
   criticalChance: 0
   criticalChance: 0
+  criticalMultiplier: 0
 --- !u!1 &7669620205589286043
 --- !u!1 &7669620205589286043
 GameObject:
 GameObject:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0

+ 3 - 1
ActionTowerDefense/Assets/Resources/Prefab/Transfiguration/Trans_Assassin.prefab

@@ -190,7 +190,8 @@ MonoBehaviour:
   m_Name: 
   m_Name: 
   m_EditorClassIdentifier: 
   m_EditorClassIdentifier: 
   player: {fileID: 0}
   player: {fileID: 0}
-  criticalChance: 0.5
+  criticalChance: 1
+  criticalMultiplier: 2
 --- !u!114 &2437299196472462353
 --- !u!114 &2437299196472462353
 MonoBehaviour:
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0
@@ -660,6 +661,7 @@ MonoBehaviour:
   hitRate: 1
   hitRate: 1
   Miss: {fileID: 0}
   Miss: {fileID: 0}
   criticalChance: 0
   criticalChance: 0
+  criticalMultiplier: 0
 --- !u!1 &7669620205589286043
 --- !u!1 &7669620205589286043
 GameObject:
 GameObject:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0

+ 30 - 1
ActionTowerDefense/Assets/Resources/Spine/Spirits_Assassin/Spirits_Assassin_Controller.controller

@@ -1019,6 +1019,32 @@ AnimationClip:
   m_HasGenericRootTransform: 0
   m_HasGenericRootTransform: 0
   m_HasMotionFloatCurves: 0
   m_HasMotionFloatCurves: 0
   m_Events: []
   m_Events: []
+--- !u!1102 &-372579538427512688
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Summon
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions: []
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: -8276454673440742251}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!91 &9100000
 --- !u!91 &9100000
 AnimatorController:
 AnimatorController:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0
@@ -1378,6 +1404,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
   - serializedVersion: 1
     m_State: {fileID: 5286857916814788798}
     m_State: {fileID: 5286857916814788798}
     m_Position: {x: 570, y: 610, z: 0}
     m_Position: {x: 570, y: 610, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -372579538427512688}
+    m_Position: {x: 580, y: 260, z: 0}
   m_ChildStateMachines: []
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
   m_EntryTransitions: []
@@ -1891,7 +1920,7 @@ AnimatorState:
   m_MirrorParameterActive: 0
   m_MirrorParameterActive: 0
   m_CycleOffsetParameterActive: 0
   m_CycleOffsetParameterActive: 0
   m_TimeParameterActive: 0
   m_TimeParameterActive: 0
-  m_Motion: {fileID: -3060314501212524821}
+  m_Motion: {fileID: 6913506345081881606}
   m_Tag: 
   m_Tag: 
   m_SpeedParameter: 
   m_SpeedParameter: 
   m_MirrorParameter: 
   m_MirrorParameter: 

+ 21 - 1
ActionTowerDefense/Assets/Scripts/AttackTrigger.cs

@@ -15,7 +15,7 @@ public class AttackTrigger : MonoBehaviour
     public int offsetY = 1;
     public int offsetY = 1;
     public float hitRate = 1;
     public float hitRate = 1;
     [HideInInspector]public GameObject Miss;
     [HideInInspector]public GameObject Miss;
-    public float criticalChance;            //±©»÷ÂÊ
+
     private void Awake()
     private void Awake()
     {
     {
         owner = GetComponentInParent<Character>();
         owner = GetComponentInParent<Character>();
@@ -40,6 +40,25 @@ public class AttackTrigger : MonoBehaviour
                 trigedObjs.Add(hitTrigger);
                 trigedObjs.Add(hitTrigger);
                 if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 {
                 {
+                    if (Random.Range(0f, 1f) < owner.criticalChance)
+                    {
+                        hitTrigger.BeHit((int)(damage * owner.criticalMultiplier), force 
+                            * owner.criticalMultiplier, changeHurt, repelValue);
+                        GameObject effect = Instantiate(spiritsAttackEffect);
+                        effect.transform.position = new Vector3(hitTrigger.transform.position.x,
+                            transform.position.y + offsetY, 0);
+                    }
+                    else
+                    {
+                        hitTrigger.BeHit(damage, force, changeHurt, repelValue);
+                        if (spiritsAttackEffect != null)
+                        {
+                            GameObject effect = Instantiate(spiritsAttackEffect);
+                            effect.transform.position = new Vector3(hitTrigger.transform.position.x,
+                                transform.position.y + offsetY, 0);
+                        }
+                    }
+                    /*
                     if (Random.Range(0f, 1f) < hitRate)
                     if (Random.Range(0f, 1f) < hitRate)
                     {
                     {
                         hitTrigger.BeHit(damage, force, changeHurt, repelValue);
                         hitTrigger.BeHit(damage, force, changeHurt, repelValue);
@@ -55,6 +74,7 @@ public class AttackTrigger : MonoBehaviour
                         GameObject miss = Instantiate(Miss);
                         GameObject miss = Instantiate(Miss);
                         miss.transform.position = transform.position + Vector3.up * 0.5f;
                         miss.transform.position = transform.position + Vector3.up * 0.5f;
                     }
                     }
+                    */
                 }
                 }
             }
             }
         }
         }

+ 2 - 0
ActionTowerDefense/Assets/Scripts/Character.cs

@@ -113,6 +113,8 @@ public class Character : MonoBehaviour
     public bool attackToFloat = false;      //攻击使敌方漂浮
     public bool attackToFloat = false;      //攻击使敌方漂浮
     public bool isSoulUnstable;             //灵魂不稳定状态
     public bool isSoulUnstable;             //灵魂不稳定状态
     public float soulUnstableTime;          //灵魂不稳定状态时间
     public float soulUnstableTime;          //灵魂不稳定状态时间
+    public float criticalChance;            //暴击率
+    public float criticalMultiplier;       //暴击倍率
 
 
     public virtual void Init()
     public virtual void Init()
     {
     {

+ 5 - 0
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -1602,6 +1602,11 @@ public class PlayerController : MoveCharacter
             demonic.attackToFloat = true;
             demonic.attackToFloat = true;
             demonic.floatProbability = probability;
             demonic.floatProbability = probability;
         }
         }
+        if (id == 1)
+        {
+            demonic.criticalChance = criticalChance;
+            demonic.criticalMultiplier = criticalMultiplier;
+        }
         demonic.id = id;
         demonic.id = id;
         demonic.playerID = playerId;
         demonic.playerID = playerId;
         if (!demonicDic.ContainsKey(id))
         if (!demonicDic.ContainsKey(id))

+ 4 - 2
ActionTowerDefense/Assets/Scripts/Spirits/Trans_Assassin.cs

@@ -5,13 +5,15 @@ using UnityEngine;
 public class Trans_Assassin : MonoBehaviour
 public class Trans_Assassin : MonoBehaviour
 {
 {
     public PlayerController player;
     public PlayerController player;
-    public float criticalChance;
+    public float criticalChance;            //±©»÷ÂÊ
+    public float criticalMultiplier;        //±©»÷±¶Êý
     // Start is called before the first frame update
     // Start is called before the first frame update
     void Start()
     void Start()
     {
     {
         player = GetComponentInParent<PlayerController>();
         player = GetComponentInParent<PlayerController>();
         player.jumpNumber = 3;
         player.jumpNumber = 3;
-        player.attackTrigger.criticalChance = criticalChance;
+        player.criticalChance = criticalChance;
+        player.criticalMultiplier = criticalMultiplier;
     }
     }
 
 
     // Update is called once per frame
     // Update is called once per frame