示例#1
0
    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));    // если игрок не видит врага - просто влючить анимацию взамаха меча
                }
            }
        }
    }
示例#2
0
    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;
            }
        }
    }