private void Attack() { if (cooldownRemaining < 0.0f) { animator.SetTrigger("OnAttack"); KnightEnemy knight = target.GetComponent <KnightEnemy>(); audioSource.clip = blips[Random.Range(0, blips.Count - 1)]; audioSource.Play(); if (knight != null) { bool dead = knight.TakeDamage(damage, this); if (dead) { target = null; // check in case any other potential targets close by Collider2D[] hitColliders = Physics2D.OverlapCircleAll(transform.position, aggroCollider.radius); int i = 0; while (i < hitColliders.Length) { if (hitColliders[i].GetComponent <KnightEnemy>()) { target = hitColliders[i].GetComponent <MonoBehaviour>(); break; } i++; } } } cooldownRemaining = attackCooldown; } }
// Update is called once per frame void Update() { if (music.volume < 0.6f) { music.volume += musicFadeUpSpeed * Time.deltaTime; } if (Input.GetMouseButtonDown(0)) { Vector2 target = Camera.main.ScreenToWorldPoint(Input.mousePosition); // is it an enemy? Collider2D[] hitColliders = Physics2D.OverlapCircleAll(target, 2.0f); int i = 0; while (i < hitColliders.Length) { KnightEnemy knight = hitColliders[i].GetComponent <KnightEnemy>(); if (knight != null) { // send the horde! for (int j = 0; j < knightFriendlies.Count; j++) { knightFriendlies[j].GoToTarget(knight); } return; } i++; } // send the horde! for (int j = 0; j < knightFriendlies.Count; j++) { knightFriendlies[j].GoToPosition(target); } } }
//private BoxCollider2D moveTerritory; void Awake() { slimeEnemy = GetComponent <RedSlimeEnemy> (); knightEnemy = GetComponent <KnightEnemy> (); //moveTerritory = GetComponent<BoxCollider2D> (); }
internal void GoToTarget(KnightEnemy knight) { target = knight; }