blob: ad589dbf9ea4e24929648e968e32fa766f9817c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
using System.Collections;
using UnityEngine;
public class RadarShot : MonoBehaviour
{
private WeaponHandler wh;
private Player player;
public ParticleSystem[] boops;
public float range = 12f;
private void Start()
{
wh = GetComponentInParent<WeaponHandler>();
player = GetComponentInParent<Player>();
}
public void Go()
{
Player closestPlayerInTeam = PlayerManager.instance.GetClosestPlayerInTeam(base.transform.position, PlayerManager.instance.GetOtherTeam(player.teamID), needVision: true);
if ((bool)closestPlayerInTeam && Vector2.Distance(player.transform.position, closestPlayerInTeam.transform.position) < range)
{
StartCoroutine(FollowTarget(closestPlayerInTeam));
if (player.data.view.IsMine)
{
StartCoroutine(ShootAttacks(closestPlayerInTeam, GetComponent<AttackLevel>().attackLevel));
}
}
}
private IEnumerator ShootAttacks(Player target, int shots)
{
for (int i = 0; i < shots; i++)
{
yield return new WaitForSeconds(0.1f);
wh.gun.forceShootDir = wh.gun.GetRangeCompensation(Vector3.Distance(target.transform.position, player.transform.position)) * Vector3.up + target.transform.position - player.transform.position;
wh.gun.Attack(0f, forceAttack: true, 1f, 1f, useAmmo: false);
wh.gun.forceShootDir = Vector3.zero;
}
}
private IEnumerator FollowTarget(Player target)
{
for (int i = 0; i < boops.Length; i++)
{
boops[i].Play();
}
float c = 0f;
while (c < 1f)
{
c += TimeHandler.deltaTime;
for (int j = 0; j < boops.Length; j++)
{
boops[j].transform.position = target.transform.position;
}
yield return null;
}
}
}
|