コード例 #1
0
        public override void GetMaps(out DangerMap dangerMap, out InterestMap interestMap)
        {
            interestMap = new InterestMap(0f, _contextSteering.SteeringResolution);
            dangerMap   = new DangerMap(0f, _contextSteering.SteeringResolution);

            Vector3 forward = transform.forward;

            for (int i = 0; i < ContextMap.defaultDirections[_contextSteering.SteeringResolution].Length; i++)
            {
                if (!TestDirection(out RaycastHit hitInfo, i))
                {
                    continue;
                }

                if (hitInfo.transform.root == transform)
                {
                    continue;
                }

                float dot = Mathf.Abs(Vector3.Dot(ContextMap.defaultDirections[_contextSteering.SteeringResolution][i],
                                                  forward));
                float distance = Vector3.Distance(hitInfo.point, _collider.ClosestPoint(hitInfo.point));

                dangerMap.InsertValue(i, Mathf.Min(k / (distance * distance), dot), (int)_contextSteering.SteeringResolution / 8);
                interestMap.InsertValue(interestMap.GetOppositeDirection(i), Mathf.Min(k / (distance * distance), dot), (int)_contextSteering.SteeringResolution / 8);

                // dangerMap.InsertValue(i,Mathf.Max(dot/distance,1f),(int)_contextSteering.SteeringResolution/8);
                // interestMap.InsertValue(dangerMap.GetOppositeDirection(i),Mathf.Max(dot/distance,1f),(int)_contextSteering.SteeringResolution/8);
            }

            interestMap = (InterestMap)ContextMap.Combine(interestMap, _lastFrameInterest, interestLoseRateo);
            dangerMap   = (DangerMap)ContextMap.Combine(dangerMap, _lastFrameDanger, dangerLoseRateo);

            _lastFrameInterest = interestMap;
            _lastFrameDanger   = dangerMap;

            if (!debug)
            {
                return;
            }

            interestMap.DebugMap(transform.position);
            dangerMap.DebugMap(transform.position);
        }
コード例 #2
0
        public override void GetMaps(out DangerMap dangerMap, out InterestMap interestMap)
        {
            interestMap = new InterestMap(0f, _contextSteering.SteeringResolution);
            dangerMap   = new DangerMap(0f, _contextSteering.SteeringResolution);

            if (_currentArena == null)
            {
                return;
            }

            Vector3 toDesiredPosition = (_currentArena.transform.position - transform.position).normalized;
            float   distance          = Vector3.Distance(transform.position, _currentArena.transform.position);

            for (int i = 0; i < ContextMap.defaultDirections[_contextSteering.SteeringResolution].Length; i++)
            {
                float dot = Vector3.Dot(ContextMap.defaultDirections[_contextSteering.SteeringResolution][i],
                                        toDesiredPosition);
                if (dot >= 0)
                {
                    //interestMap.InsertValue(i, Mathf.Min((distance * distance) / k,dot), (int)_contextSteering.SteeringResolution/8);
                    dangerMap.InsertValue(dangerMap.GetOppositeDirection(i), Mathf.Min((distance * distance) / k, dot), (int)_contextSteering.SteeringResolution / 8);
                }
            }

            //interestMap = (InterestMap) ContextMap.Combine(interestMap, _lastFrameInterest, interestLoseRateo);
            dangerMap = (DangerMap)ContextMap.Combine(dangerMap, _lastFrameDanger, dangerLoseRateo);

            _lastFrameInterest = interestMap;
            _lastFrameDanger   = dangerMap;

            if (!debug)
            {
                return;
            }

            interestMap.DebugMap(transform.position);
            dangerMap.DebugMap(transform.position);
        }