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); }
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); }