public void DetectEnemy() // определяем, что враг находится в поле зрения игрока { _currentPosition = new Vector2(transform.position.x, SightDistance.position.y); _endPosition = new Vector2(SightDistance.position.x, SightDistance.position.y); var hits = Physics2D.LinecastAll(_currentPosition, _endPosition); foreach (var obj in hits) { var target = obj.collider.gameObject; if (State != PlayerStates.Attacking && State != PlayerStates.Walking && State != PlayerStates.ReceivingDamage) { if (target.CompareTag("Enemy")) // игрок увидел противника { StartCoroutine(AttackTheEnemy(target)); // атаковать противника _knockBack.HitSomeObject(target); } else if (target.CompareTag("Chest")) { StartCoroutine(OpenChest(target)); } else { StartCoroutine(AttackTheEnemy(null)); // если игрок не видит врага - просто влючить анимацию взамаха меча } } } }
public void DetectPlayer() // определяем, что враг находится в поле зрения игрока { _currentPosition = new Vector2(transform.position.x, SightDistance.position.y); _endPosition = new Vector2(SightDistance.position.x, SightDistance.position.y); var hits = Physics2D.LinecastAll(_currentPosition, _endPosition); foreach (var obj in hits) { var target = obj.collider.gameObject; if (target.CompareTag("Player")) // игрок увидел противника { if (TimeTillAttack <= 0) { StartCoroutine(AttackThePlayer(target)); _knockBack.HitSomeObject(target); TimeTillAttack = TimeBetweenAttack; } TimeTillAttack -= Time.deltaTime; } } }