Selaa lähdekoodia

Merge branch 'master' of http://bttc123.synology.me:3002/bttc123/ActionTowerDefense

DESKTOP-PG06IH1\Mr.AB 1 vuosi sitten
vanhempi
commit
65415bba49

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

@@ -10,7 +10,6 @@ public class AttackTrigger : MonoBehaviour
     public int damage;
     public Vector3 force;
     public bool changeHurt;
-    public float hurtTime;
     public float repelValue;
 
     private void Awake()
@@ -38,7 +37,7 @@ public class AttackTrigger : MonoBehaviour
                 if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 {
                     print("BeHit");
-                    hitTrigger.BeHit(damage, force, changeHurt, hurtTime, repelValue);
+                    hitTrigger.BeHit(damage, force, changeHurt, repelValue);
                 }
             }
         }

+ 2 - 2
ActionTowerDefense/Assets/Scripts/BeHitTrigger.cs

@@ -17,8 +17,8 @@ public class BeHitTrigger : MonoBehaviour
         
     }
 
-    public void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
+    public void BeHit(int damage, Vector3 force, bool changeHurt, float repelValue)
     {
-        owner.BeHit(damage, force, changeHurt, hurtTime, repelValue);
+        owner.BeHit(damage, force, changeHurt, repelValue);
     }
 }

+ 3 - 5
ActionTowerDefense/Assets/Scripts/Bullet.cs

@@ -17,7 +17,6 @@ public class Bullet : MonoBehaviour
     public int damage;
     public float force;
     public bool changeHurt;
-    public float hurtTime;
     public float repelValue;
     public BulletType bulletType;
     public bool isGetTarget = false;
@@ -50,7 +49,7 @@ public class Bullet : MonoBehaviour
         }
     }
 
-    public void BeShoot(Character own, Vector3 shootPos, Vector3 dir, int dmg, float fc, bool hurt, float time, float repel, bool track = false, Character target = null)
+    public void BeShoot(Character own, Vector3 shootPos, Vector3 dir, int dmg, float fc, bool hurt, float repel, bool track = false, Character target = null)
     {
         transform.position = shootPos;
         transform.right = -dir;
@@ -60,7 +59,6 @@ public class Bullet : MonoBehaviour
         damage = dmg;
         force = fc;
         changeHurt = hurt;
-        hurtTime = time;
         repelValue = repel;
         rb.velocity = dir * speed;
         isTrack = track;
@@ -99,12 +97,12 @@ public class Bullet : MonoBehaviour
                     switch (bulletType)
                     {
                         case BulletType.Single:
-                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, hurtTime, repelValue);
+                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, repelValue);
                             isGetTarget = true;
                             gameObject.SetActive(false);
                             break;
                         case BulletType.Penetrate:
-                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, hurtTime, repelValue);
+                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, repelValue);
                             break;
                         case BulletType.Bomb:
                             break;

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

@@ -67,8 +67,6 @@ public class Character : MonoBehaviour
     public SearchTrigger searchTrigger;
     public List<TargetType> targetTypes;
     public bool canHitFly;
-    [HideInInspector]
-    public float hurtKeepTime;
 
     public virtual void Init()
     {
@@ -122,7 +120,7 @@ public class Character : MonoBehaviour
 
     }
 
-    public virtual void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
+    public virtual void BeHit(int damage, Vector3 force, bool changeHurt, float repelValue)
     {
         if (invincibleTime > 0)
         {
@@ -156,7 +154,7 @@ public class Character : MonoBehaviour
         {
             attackDir.x = -attackDir.x;
         }
-        bullet.BeShoot(this, shootPos[shootId].position, attackDir, attackInfo.damage, attackInfo.force, attackInfo.changeHurt, attackInfo.hurtTime, attackInfo.repelValue, shootTrack, attackTarget?attackTarget:null);
+        bullet.BeShoot(this, shootPos[shootId].position, attackDir, attackInfo.damage, attackInfo.force, attackInfo.changeHurt, attackInfo.repelValue, shootTrack, attackTarget?attackTarget:null);
     }
 
     public virtual Vector3 GetMoveDir()
@@ -193,7 +191,6 @@ public class Character : MonoBehaviour
                 {
                     attackTriggers[i].damage = attack1Infos[i].damage;
                     attackTriggers[i].changeHurt = attack1Infos[i].changeHurt;
-                    attackTriggers[i].hurtTime = attack1Infos[i].hurtTime;
                     attackTriggers[i].repelValue = attack1Infos[i].repelValue;
                     Vector3 attackDir = attack1Infos[i].attackDir.normalized;
                     if (bodyTrans.localScale.x < 0)
@@ -239,7 +236,6 @@ public class Character : MonoBehaviour
                 {
                     attackTriggers[i].damage = attack2Infos[i].damage;
                     attackTriggers[i].changeHurt = attack2Infos[i].changeHurt;
-                    attackTriggers[i].hurtTime = attack2Infos[i].hurtTime;
                     attackTriggers[i].repelValue = attack2Infos[i].repelValue;
                     Vector3 attackDir = attack2Infos[i].attackDir.normalized;
                     if (bodyTrans.localScale.x < 0)

+ 2 - 1
ActionTowerDefense/Assets/Scripts/Demonic.cs

@@ -320,7 +320,7 @@ public class Demonic : MoveCharacter
                 rb.velocity += Vector3.up * extraFallGravity * Time.deltaTime;
                 break;
             case CharacterState.Hurt:
-                if (hurtKeepTime <= 0)
+                if (hurtKeepTime <= 0 && rb.velocity.magnitude < hurtChangeVelocity)
                 {
                     ChangeState(CharacterState.Idle);
                     break;
@@ -413,6 +413,7 @@ public class Demonic : MoveCharacter
                 ani.Play("hitted", 0, 0);
                 aniCollider.Play("Hurt", 0, 0);
                 invincibleTime = totalInvincibleTime;
+                hurtKeepTime = minHurtKeepTime;
                 //ani.Play("Invincible", 2, 0);
                 break;
             case CharacterState.Attack:

+ 2 - 1
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -265,7 +265,7 @@ public class Enemy : MoveCharacter
                 rb.velocity += Vector3.up * extraFallGravity * Time.deltaTime;
                 break;
             case CharacterState.Hurt:
-                if (hurtKeepTime <= 0)
+                if (hurtKeepTime <= 0 && rb.velocity.magnitude < hurtChangeVelocity)
                 {
                     ChangeState(CharacterState.Idle);
                     break;
@@ -357,6 +357,7 @@ public class Enemy : MoveCharacter
                 ani.Play("hitted", 0, 0);
                 aniCollider.Play("Hurt", 0, 0);
                 invincibleTime = totalInvincibleTime;
+                hurtKeepTime = minHurtKeepTime;
                 //ani.Play("Invincible", 2, 0);
                 break;
             case CharacterState.Attack:

+ 1 - 1
ActionTowerDefense/Assets/Scripts/EnemyTower.cs

@@ -108,7 +108,7 @@ public class EnemyTower : Character
         }
     }
 
-    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
+    public override void BeHit(int damage, Vector3 force, bool changeHurt, float repelValue)
     {
         hp -= damage;
         uiHp.Show(hp, totalHp);

+ 6 - 3
ActionTowerDefense/Assets/Scripts/MoveCharacter.cs

@@ -9,7 +9,7 @@ public class MoveCharacter : Character
     public float extraRiseGravity = 0; //上升时额外重力加速度
     public float extraFallGravity = -10; //下落时额外重力加速度
     public float moveSpeed = 5;
-    [HideInInspector]
+    //[HideInInspector]
     public float beRepelValue;
     public float totalBeRepelValue;
     [HideInInspector]
@@ -17,8 +17,12 @@ public class MoveCharacter : Character
     public float totalWeakTime;
     public float weakUpSpeed = 10f;
     public float decelerationRatio = 1f;
+    public float minHurtKeepTime = 0.2f;
+    [HideInInspector]
+    public float hurtKeepTime = 0;
+    public float hurtChangeVelocity = 1;
 
-    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
+    public override void BeHit(int damage, Vector3 force, bool changeHurt, float repelValue)
     {
         print("MoveCharacterBeHit");
         if (invincibleTime > 0)
@@ -37,7 +41,6 @@ public class MoveCharacter : Character
         {
             print("ChangeHurt");
             rb.AddForce(force);
-            hurtKeepTime = hurtTime;
             ChangeState(CharacterState.Hurt);
             beRepelValue = totalBeRepelValue;
             return;

+ 3 - 3
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -19,7 +19,6 @@ public struct AttackInfo
     public Vector3 attackDir;
     public float force;
     public bool changeHurt;
-    public float hurtTime;
     public float repelValue;
 }
 
@@ -404,12 +403,12 @@ public class PlayerController : MoveCharacter
     {
         base.OnState();
 
+        hurtKeepTime -= Time.deltaTime;
         cacheJumpTime -= Time.deltaTime;
         cacheAttackTime -= Time.deltaTime;
         cacheSummonTime -= Time.deltaTime;
         canJumpTime -= Time.deltaTime;
         invincibleTime -= Time.deltaTime;
-        hurtKeepTime -= Time.deltaTime;
         attackTime -= Time.deltaTime;
         summonTime -= Time.deltaTime;
         rushTime -= Time.deltaTime;
@@ -515,7 +514,7 @@ public class PlayerController : MoveCharacter
                 rb.velocity = AirMove(rb.velocity);
                 break;
             case CharacterState.Hurt:
-                if (hurtKeepTime <= 0)
+                if (hurtKeepTime <= 0 && rb.velocity.magnitude < hurtChangeVelocity)
                 {
                     if (CheckPlayerChangeState())
                     {
@@ -888,6 +887,7 @@ public class PlayerController : MoveCharacter
                 aniCollider.Play("Hurt", 0, 0);
                 ani.Play("hitted", 0, 0);
                 invincibleTime = totalInvincibleTime;
+                hurtKeepTime = minHurtKeepTime;
                 //ani.Play("Invincible", 2, 0);
                 break;
             case CharacterState.Attack:

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Tower.cs

@@ -109,7 +109,7 @@ public class Tower : Character
         }
     }
 
-    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
+    public override void BeHit(int damage, Vector3 force, bool changeHurt, float repelValue)
     {
         hp -= damage;
         uiHp.Show(hp, totalHp);