private Transform target;
public int thisAtackTower;
public float speed = 10;
public Rigidbody2D bullet;
public Transform gunPoint;
public float fireRate = 1;
private float curTimeout;
public int ZombieArrayGivePosition;
public List<GameObject> zombieArray = new List<GameObject>();
public List<GameObject> ZombieMaxArrayList = new List<GameObject>();
public List<GameObject> zombieArrayNew = new List<GameObject>();
public GameObject NewTarget;
public AudioSource _audioSoruce;
public AudioClip FireSound;
void OnTriggerExit2D(Collider2D collider)
{
if (collider.gameObject.tag == "Zombie")
{
target = null;
zombieArray.Remove(collider.gameObject);
ZombieMaxArrayList.Remove(collider.gameObject);
}
}
void OnTriggerEnter2D(Collider2D collider)
{
if (collider.gameObject.tag == "Zombie")
{
zombieArray.Add(collider.gameObject);
}
}
void OnTriggerStay2D(Collider2D collider)
{
if (collider.gameObject.tag == "Zombie")
{
ChekDistante();
if (target != null)
{
transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, Mathf.Atan2(target.transform.position.y - transform.position.y, target.transform.position.x - transform.position.x) * Mathf.Rad2Deg + 90);
Fire();
}
}
}
private void ChekDistante()
{
ZombieArrayGivePosition = 0;
for (int i = 0; i < zombieArray.Count; i++)
{
if (zombieArray[i].GetComponent<ZombieStandart>().NewPosition > ZombieArrayGivePosition)
{// проверяю, если максимальная точка меньше точки из массива, то беру её
ZombieMaxArrayList.Clear();
ZombieMaxArrayList.Add(zombieArray[i]);
ZombieArrayGivePosition = zombieArray[i].GetComponent<ZombieStandart>().NewPosition;
}
else if (ZombieArrayGivePosition == zombieArray[i].GetComponent<ZombieStandart>().NewPosition)
{
ZombieMaxArrayList.Add(zombieArray[i]);
}
}
if (zombieArray.Count > 0)
{
NewTarget = ZombieMaxArrayList[0];
target = NewTarget.GetComponent<Transform>();
ZombieMaxArrayList.Clear();
}
}
void Fire()
{
curTimeout += Time.deltaTime;
if (curTimeout > fireRate)
{
Debug.Log(Time.deltaTime);
curTimeout = 0;
_audioSoruce.PlayOneShot(FireSound);
Rigidbody2D clone = Instantiate(bullet, gunPoint.position, Quaternion.identity) as Rigidbody2D;
clone.GetComponent<BulletEnter>().atack = thisAtackTower;
clone.transform.up = gunPoint.up;
clone.velocity = clone.transform.up * speed;
}
}
}
public Slider SliderMusic;
private void Start()
{
SliderMusic.value = Mixer.audioMixer. // что-то такое есть?
}
target = ZombieMaxArrayList[0].GetComponent<Transform>(); // target- туда запихнуть пытаюсь, ZombieMaxArrayList мой list.
void OnTriggerExit2D(Collider2D collider)
{
zombieArray.Remove(collider.gameObject); //убираю объект, который вышел из списка
ZombieMaxArФrayList.Remove(collider.gameObject); //убираю объект, который вышел из списка
this.target = null; // target обнуляю
}
public void Round(int roundIndex)
{
if (roundIndex == 1)
{
TimeStep = 5;
NomberZombie = 0;
CountZombie = 5;
StartCoroutine(SpawnMob());
}
if (roundIndex == 2)
{
TimeStep = 5;
NomberZombie = 1;
CountZombie = 15;
StartCoroutine(SpawnMob());
}
if (roundIndex == 3)
{
TimeStep = 5;
NomberZombie = 2;
CountZombie = 15;
StartCoroutine(SpawnMob());
}
}
IEnumerator SpawnMob()
{
if (ThisNumber < CountZombie)
{
yield return new WaitForSeconds(TimeStep);
Instantiate(ZombieType[NomberZombie], StartPos.position, Quaternion.identity);
ThisNumber++;
Repeat();
}
else if (ThisNumber >= CountZombie) roundIndex++;
}