コード例 #1
0
        /// <summary>
        /// Default cover settings.
        /// </summary>
        public static CoverSettings Default()
        {
            var settings = new CoverSettings();

            settings.CanUseCorners            = true;
            settings.TallThreshold            = 1.1f;
            settings.LowCapsuleHeight         = 0.75f;
            settings.RotationSpeed            = 20.0f;
            settings.EnterDistance            = 0.15f;
            settings.LeaveDistance            = 0.25f;
            settings.PivotSideMargin          = 0.5f;
            settings.CornerAimTriggerDistance = 0.6f;
            settings.TallSideEnterRadius      = 0.15f;
            settings.TallSideLeaveRadius      = 0.05f;
            settings.TallCornerOffset         = 0.25f;
            settings.LowSideEnterRadius       = 0.3f;
            settings.LowSideLeaveRadius       = 0.2f;
            settings.LowCornerOffset          = 0.4f;
            settings.DirectionChangeDelay     = 0.25f;
            settings.BackDelay    = 0.5f;
            settings.CornerOffset = new Vector3(1, 0, 0);
            settings.Update       = CoverUpdateSettings.Default();
            settings.Angles       = CoverAngleSettings.Default();

            return(settings);
        }
コード例 #2
0
        /// <summary>
        /// Updates cover search.
        /// </summary>
        public void Update(CoverState current, Vector3 position, Vector3 head, float takeRadius, float crouchRadius, float climbRadius, float capsuleRadius, CoverSettings settings)
        {
            _current       = current;
            _position      = position;
            _head          = head;
            _capsuleRadius = capsuleRadius;
            _settings      = settings;
            _takeRadius    = takeRadius;
            _crouchRadius  = crouchRadius;
            _climbRadius   = climbRadius;

            var searchRadius = takeRadius > crouchRadius ? takeRadius : crouchRadius;

            searchRadius = searchRadius > climbRadius ? searchRadius : climbRadius;

            var colliderCount = Physics.OverlapSphereNonAlloc(position, searchRadius, Util.Colliders, Layers.Cover);

            _coverCount = 0;

            for (int i = 0; i < colliderCount; i++)
            {
                var cover = GetCover(Util.Colliders[i].gameObject);

                if (cover != null)
                {
                    _covers[_coverCount++] = cover;

                    if (_coverCount == _covers.Length)
                    {
                        break;
                    }
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Default cover settings.
        /// </summary>
        public static CoverSettings Default()
        {
            var settings = new CoverSettings();

            settings.CanUseTallCorners        = true;
            settings.CanUseLowCorners         = false;
            settings.ExitBack                 = 120;
            settings.LowCapsuleHeight         = 0.75f;
            settings.LowAimCapsuleHeight      = 1.25f;
            settings.LowRotationSpeed         = 10.0f;
            settings.TallRotationSpeed        = 15.0f;
            settings.EnterDistance            = 0.15f;
            settings.LeaveDistance            = 0.25f;
            settings.ClimbDistance            = 0.5f;
            settings.MinCrouchDistance        = 0.2f;
            settings.MaxCrouchDistance        = 1.5f;
            settings.PivotSideMargin          = 0.5f;
            settings.CornerAimTriggerDistance = 0.6f;
            settings.TallSideEnterRadius      = 0.15f;
            settings.TallSideLeaveRadius      = 0.05f;
            settings.LeftTallCornerOffset     = 0.2f;
            settings.RightTallCornerOffset    = 0.2f;
            settings.LeftLowCornerOffset      = 0.4f;
            settings.RightLowCornerOffset     = 0.4f;
            settings.LowSideEnterRadius       = 0.3f;
            settings.LowSideLeaveRadius       = 0.2f;
            settings.DirectionChangeDelay     = 0.25f;
            settings.CornerOffset             = new Vector3(0.8f, 0, 0);
            settings.Update = CoverUpdateSettings.Default();

            return(settings);
        }
コード例 #4
0
        /// <summary>
        /// Updates cover search.
        /// </summary>
        public void Update(CoverState current, Vector3 position, Vector3 head, float searchRadius, float capsuleRadius, CoverSettings settings)
        {
            _current       = current;
            _colliderCount = Physics.OverlapSphereNonAlloc(position, searchRadius, _colliders);
            _position      = position;
            _head          = head;
            _radius        = capsuleRadius;
            _settings      = settings;

            for (int i = 0; i < _colliderCount; i++)
            {
                _covers[i] = GetCover(_colliders[i].gameObject);
            }
        }