示例#1
0
    /// <summary>
    /// Find closest target to attack
    /// </summary>
    private void GetTarget()
    {
        int numberOfTargets = _rangeCheck.GetNumberOfTargets();

        if (numberOfTargets > 0)
        {
            GameObject newTarget;

            if (numberOfTargets > 1)
            {
                newTarget = TurretOperations.NearestTarget(transform, _rangeCheck.GetValidTargets(), _rangeCheck.GetTags());
            }
            else
            {
                newTarget = TurretOperations.SingleTargetObstructed(transform, _rangeCheck.GetTarget(), _rangeCheck.GetTags());
            }

            if (newTarget != null && !GameObject.ReferenceEquals(_target, newTarget))
            {
                _target = newTarget;
                _animator.Activate();
                _fireTimer = 0.0f;
            }
            else if (newTarget == null && !GameObject.ReferenceEquals(_target, null))
            {
                _target = null;
            }
        }
        else
        {
            if (!GameObject.ReferenceEquals(_target, null))
            {
                _target = null;
                _animator.Deactivate();
            }
        }
    }