summaryrefslogtreecommitdiff
path: root/GameCode/RadarTower.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-03-21 10:28:46 +0800
committerchai <215380520@qq.com>2024-03-21 10:28:46 +0800
commit3fb2121cc0d00cbd42b2ca10b5dfb399a4df1a04 (patch)
treec1f4683fb021522b459408ab1ad61c40be77ee47 /GameCode/RadarTower.cs
parent9ee2cfa385ed77c39003f524f5f03079124fc476 (diff)
*misc
Diffstat (limited to 'GameCode/RadarTower.cs')
-rw-r--r--GameCode/RadarTower.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/GameCode/RadarTower.cs b/GameCode/RadarTower.cs
new file mode 100644
index 0000000..e0d8d1d
--- /dev/null
+++ b/GameCode/RadarTower.cs
@@ -0,0 +1,71 @@
+using UnityEngine;
+
+public class RadarTower : Tower
+{
+ [SerializeField]
+ private GameObject biPlanePrefab;
+
+ [SerializeField]
+ private BiPlane myPlane;
+
+ protected override void Start()
+ {
+ if (myPlane == null)
+ {
+ myPlane = Object.Instantiate(biPlanePrefab, base.transform.position + new Vector3(-50f, 5f, 0f), Quaternion.identity).GetComponent<BiPlane>();
+ }
+ base.Start();
+ }
+
+ public override void SetStats()
+ {
+ base.SetStats();
+ if (myPlane == null)
+ {
+ myPlane = Object.Instantiate(biPlanePrefab, base.transform.position + new Vector3(-50f, 5f, 0f), Quaternion.identity).GetComponent<BiPlane>();
+ }
+ myPlane.damage = base.damage;
+ myPlane.healthDamage = base.healthDamage;
+ myPlane.armorDamage = base.armorDamage;
+ myPlane.shieldDamage = base.shieldDamage;
+ myPlane.rps = rps;
+ myPlane.slowPercent = base.slowPercent;
+ myPlane.bleedPercent = base.bleedPercent;
+ myPlane.burnPercent = base.burnPercent;
+ myPlane.poisonPercent = base.poisonPercent;
+ myPlane.critChance = base.critChance;
+ myPlane.stunChance = base.stunChance;
+ }
+
+ protected override void Update()
+ {
+ if (currentTarget != null)
+ {
+ if (turret != null)
+ {
+ AimTurret();
+ }
+ GainXP();
+ }
+ timeSinceLastShot += Time.deltaTime;
+ if (currentTarget != null && timeSinceLastShot > 3f)
+ {
+ SendTargetInfo(currentTarget);
+ timeSinceLastShot = 0f;
+ }
+ }
+
+ private void SendTargetInfo(GameObject target)
+ {
+ if (myPlane.target == null)
+ {
+ myPlane.target = target;
+ }
+ }
+
+ public override void Demolish()
+ {
+ Object.Destroy(myPlane.gameObject);
+ base.Demolish();
+ }
+}