Просмотр исходного кода

光球适配现有攻击模式

wgl 6 месяцев назад
Родитель
Сommit
92ce87cf45

+ 49 - 35
ActionTowerDefense/Assets/Resources/Prefab/Conduct/PhotosphereBullet.prefab

@@ -177,9 +177,8 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 7473170563405908937}
-  - component: {fileID: 7414042625370929500}
-  - component: {fileID: 7485360237884938143}
   - component: {fileID: 8541051486027365006}
+  - component: {fileID: -2916104001614635318}
   m_Layer: 14
   m_Name: PhotosphereBullet
   m_TagString: Untagged
@@ -205,20 +204,23 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!65 &7414042625370929500
-BoxCollider:
+--- !u!54 &8541051486027365006
+Rigidbody:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 7473170563405908938}
-  m_Material: {fileID: 0}
-  m_IsTrigger: 1
-  m_Enabled: 1
   serializedVersion: 2
-  m_Size: {x: 1.5097214, y: 1.1874597, z: 20}
-  m_Center: {x: -0.15699941, y: -0.006885864, z: 0}
---- !u!114 &7485360237884938143
+  m_Mass: 1
+  m_Drag: 0
+  m_AngularDrag: 0.05
+  m_UseGravity: 0
+  m_IsKinematic: 0
+  m_Interpolate: 0
+  m_Constraints: 56
+  m_CollisionDetection: 0
+--- !u!114 &-2916104001614635318
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -227,45 +229,57 @@ MonoBehaviour:
   m_GameObject: {fileID: 7473170563405908938}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 9a4a2dbc1e482cd4b9f1532e1fddcb30, type: 3}
+  m_Script: {fileID: 11500000, guid: 9ed3bf9b9cf65b64a976fd5abe940dfb, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  canStop: 0
+  stopTime: 0
   owner: {fileID: 0}
+  attackInfo:
+    attackValue: 0
+    damage: 0
+    attackDir: {x: 0, y: 0, z: 0}
+    attackEffect: 
+    floatState:
+      time: 0
+      upTime: {x: 0, y: 0}
+      backSpeed: {x: 0, y: 0}
+      rotateSpeed: {x: 0, y: 0}
+      height: {x: 0, y: 0}
+    blowUp:
+      dir: {x: 0, y: 0, z: 0}
+      force: 0
+      time: 0
+    shotDown:
+      dir: {x: 0, y: 0, z: 0}
+      force: 0
+      time: 0
+    weak:
+      time: 0
+    armor:
+      rate: 0
+    vulnerable:
+      rate: 0
+      time: 0
+    changeDamage:
+      rate: 0
+    sustainedInjury:
+      damage: 0
   rb: {fileID: 0}
   trigedObjs: []
-  damage: 0
-  force: 0
-  changeHurt: 0
-  repelValue: 0
-  bulletType: 3
+  bulletType: 0
   isGetTarget: 0
   speed: 20
   maxFlyTime: 2
   flyTime: 0
-  isTrack: 0
+  isTrack: 1
+  canAlwaysTrack: 0
   trackTarget: {fileID: 0}
-  isBack: 0
-  stayTime: 0
   canTransmit: 0
   haveTransmit: 0
   transmitTime: 0
   portalsController: {fileID: 0}
---- !u!54 &8541051486027365006
-Rigidbody:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7473170563405908938}
-  serializedVersion: 2
-  m_Mass: 1
-  m_Drag: 0
-  m_AngularDrag: 0.05
-  m_UseGravity: 0
-  m_IsKinematic: 0
-  m_Interpolate: 0
-  m_Constraints: 56
-  m_CollisionDetection: 0
+  damage: 0
 --- !u!1 &7473170563757732086
 GameObject:
   m_ObjectHideFlags: 0

+ 6 - 4
ActionTowerDefense/Assets/Resources/Prefab/Player.prefab

@@ -766,6 +766,7 @@ MonoBehaviour:
   injuryNumText: {fileID: 6467251191553420251, guid: 9b37289f93ea76745ab2cefb79a93e3c, type: 3}
   showInjuryNum: 1
   canFly: 0
+  statePre: {fileID: 4272231268506418309, guid: cf5ca93704f49c744b0d6cfc2cd25a01, type: 3}
   ls: {fileID: 0}
   isInSoulTower: 0
   beLarger: 0
@@ -1180,14 +1181,14 @@ MonoBehaviour:
   - 0.5
   - 0.5
   - 0.5
-  conductSkills: 000000000200000005000000
+  conductSkills: 000000000300000005000000
   giant:
     bigGiant: {fileID: 5440846222648032759, guid: d64528a2dcc945b4a9ea5d5a859679f3, type: 3}
     temptHp: 1000
     temptTime: 10
   photon:
-    obj: {fileID: 0}
-    photosphereHp: 0
+    obj: {fileID: 256012001268456902, guid: ba2e5bcb5c7ac604ea72b2fcb544a3cb, type: 3}
+    photosphereHp: 1000
     havePhoton: 0
     photosphere: {fileID: 0}
 --- !u!1 &3571941039716665622
@@ -1590,6 +1591,7 @@ MonoBehaviour:
   attributeTime: 0
   floatingState: 0
   hitState: 0
+  isFly: 0
   decelerationRatioX: 2
   decelerationRatioY: 15
   haveVulnerable: 0
@@ -1615,9 +1617,9 @@ MonoBehaviour:
   freezeFrame: 0
   isFreeze: 0
   canFreeze: 0
+  curCharacterState: 0
   hitStunTime: 0
   canHitStun: 0
-  characterState: 0
 --- !u!1 &5747259993936315763
 GameObject:
   m_ObjectHideFlags: 0

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

@@ -8,7 +8,6 @@ public enum BulletType
     Single = 0,             //单体目标,触发后即销毁
     Penetrate = 1,          //穿透,可击中多个目标
     Bomb = 2,               //击中目标后爆炸
-    MagicLock = 3,          //锁定目标,只会击中目标
 }
 public class Bullet : MonoBehaviour
 {
@@ -48,7 +47,7 @@ public class Bullet : MonoBehaviour
         rb = GetComponent<Rigidbody>();
     }
   
-    private void Update()
+    public virtual void Update()
     {
         if (haveTransmit)
         {
@@ -59,31 +58,12 @@ public class Bullet : MonoBehaviour
                 portalsController.rbs.Remove(rb);
             }
         }
-        if(bulletType == BulletType.MagicLock)
-        {
-            Vector3 dis1 = trackTarget.beSearchTrigger.transform.position;
-            Vector3 dis2 = transform.position;
-            dis2.z = dis1.z;
-            if (Vector3.Distance(dis1,dis2) < 0.1)
-            {
-                trackTarget.BeHit(attackInfo, owner) ;
-                if (trackTarget.debugAttackFrom)
-                {
-                    trackTarget.DebugAttackFrom(owner.name, attackInfo.damage);
-                }
-                gameObject.SetActive(false);
-            }
-        }
     }
 
     private void FixedUpdate()
     {
-        if (bulletType != BulletType.MagicLock)
-        {
-            flyTime += Time.deltaTime;
-        }
-        
-        if(flyTime >= maxFlyTime)
+        flyTime += Time.deltaTime;
+        if (flyTime >= maxFlyTime)
         {
             isGetTarget = true;
             gameObject.SetActive(false);
@@ -129,14 +109,6 @@ public class Bullet : MonoBehaviour
         {
             return;
         }
-        Photosphere photosphere = other.GetComponentInParent<Photosphere>();
-        if (photosphere && Util.CheckCanHit(owner.tag, "Player"))
-        {
-            isInVain = true;
-            photosphere.Reflex(owner.beHitTrigger, owner.attackController.attackInfo.damage);
-            gameObject.SetActive(false);
-            return;
-        }
         BeHitTrigger hitTrigger = other.GetComponent<BeHitTrigger>();
         if (hitTrigger != null)
         {

+ 2 - 1
ActionTowerDefense/Assets/Scripts/Conduct/ConductController.cs

@@ -158,6 +158,8 @@ public class ConductController : MonoBehaviour
                     photosphere.owner = playerController;
                     photosphere.conductId = demonicId;
                     photosphere.hp = boostNum * photon.photosphereHp;
+                    photosphere.conductController = this;
+                    photon.photosphere = photosphere;
                     photon.havePhoton = true;
                     break;
                     //        case ConductSkills.AddAttack:
@@ -251,7 +253,6 @@ public class ConductController : MonoBehaviour
         if (photon.havePhoton)
         {
             photon.photosphere.Reflex(attackFrom.beHitTrigger, damage);
-            gameObject.SetActive(false);
             return true;
         }
         return false;

+ 40 - 0
ActionTowerDefense/Assets/Scripts/Conduct/MagicBullet.cs

@@ -0,0 +1,40 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class MagicBullet : Bullet
+{
+    public int damage;
+
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+
+    // Update is called once per frame
+    public override void Update()
+    {
+        Vector3 dis1 = trackTarget.beSearchTrigger.transform.position;
+        Vector3 dis2 = transform.position;
+        dis2.z = dis1.z;
+        if (Vector3.Distance(dis1, dis2) < 0.1)
+        {
+            trackTarget.GetComponentInChildren<BeHitTrigger>().BeHit(attackInfo, owner);
+            gameObject.SetActive(false);
+        }
+    }
+
+    public void Reflex(int damage, Character target, Vector3 shootPos, Vector3 dir,Character own)
+    {
+        transform.position = shootPos;
+        transform.right = -dir;
+        rb.velocity = dir * speed;
+        trackTarget = target;
+        owner = own;
+        gameObject.SetActive(true);
+        isGetTarget = false;
+        flyTime = 0;
+        attackInfo.damage = damage;
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Conduct/MagicBullet.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9ed3bf9b9cf65b64a976fd5abe940dfb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 5 - 1
ActionTowerDefense/Assets/Scripts/Conduct/Photosphere.cs

@@ -4,7 +4,9 @@ using UnityEngine;
 
 public class Photosphere : MonoBehaviour
 {
+    //×é¼þ
     public PlayerController owner;
+    public ConductController conductController;
     public int conductId;
     
     [Header("Í£Áôʱ¼ä")]public float stayTime;
@@ -18,6 +20,7 @@ public class Photosphere : MonoBehaviour
         if (time >= stayTime || owner.isDie)
         {
             owner.conductCanRelease[conductId] = true;
+            conductController.photon.havePhoton = false;
             gameObject.SetActive(false);
         }
     }
@@ -27,7 +30,8 @@ public class Photosphere : MonoBehaviour
         hp -= damage;
         GameObject obj = Instantiate(bulletPrefab);
         Vector3 attackDir = (beHitTrigger.owner.beSearchTrigger.transform.position - transform.position).normalized;
-        obj.GetComponent<Bullet>().BeShoot(owner, transform.position, attackDir, true, beHitTrigger.owner);
+        //obj.GetComponent<Bullet>().BeShoot(beHitTrigger.owner, transform.position, attackDir, true, true, beHitTrigger.owner);
+        obj.GetComponent<MagicBullet>().Reflex(damage,beHitTrigger.owner,transform.position, attackDir,owner);
         if (hp <= 0)
         {
             owner.conductCanRelease[conductId] = true;