diff options
author | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
commit | 766cdff5ffa72b65d7f106658d1603f47739b2ba (patch) | |
tree | 34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/LineRangeEffect.cs |
+ init
Diffstat (limited to 'GameCode/LineRangeEffect.cs')
-rw-r--r-- | GameCode/LineRangeEffect.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/GameCode/LineRangeEffect.cs b/GameCode/LineRangeEffect.cs new file mode 100644 index 0000000..6671fcc --- /dev/null +++ b/GameCode/LineRangeEffect.cs @@ -0,0 +1,44 @@ +using UnityEngine; + +public class LineRangeEffect : MonoBehaviour +{ + public float dmg; + + public float knockback; + + private LineEffect lineEffect; + + private Player owner; + + private SpawnedAttack spawned; + + private bool done; + + private void Start() + { + spawned = GetComponent<SpawnedAttack>(); + owner = GetComponent<SpawnedAttack>().spawner; + lineEffect = GetComponentInChildren<LineEffect>(); + } + + private void Update() + { + if (done || !spawned.IsMine()) + { + return; + } + Player closestPlayerInTeam = PlayerManager.instance.GetClosestPlayerInTeam(base.transform.position, PlayerManager.instance.GetOtherTeam(owner.teamID), needVision: true); + if ((bool)closestPlayerInTeam) + { + float num = 2f; + float radius = lineEffect.GetRadius(); + float num2 = Vector2.Distance(base.transform.position, closestPlayerInTeam.transform.position); + if (num2 < radius + num && num2 > radius - num) + { + done = true; + closestPlayerInTeam.data.healthHandler.CallTakeDamage(dmg * base.transform.localScale.x * (closestPlayerInTeam.transform.position - base.transform.position).normalized, closestPlayerInTeam.transform.position, null, owner); + closestPlayerInTeam.data.healthHandler.CallTakeForce(knockback * base.transform.localScale.x * (closestPlayerInTeam.transform.position - base.transform.position).normalized); + } + } + } +} |