protected override void Think(float deltaTime) { base.Think(deltaTime); Brain.Process(); if (TargetSelectionRegulator.IsReady) { TargetingSystem.Update(); } if (GoalArbitrationRegulator.IsReady) { Brain.Arbitrate(); } if (VisionUpdateRegulator.IsReady) { SensoryMemory.UpdateVision(); } if (WeaponSelectionRegulator.IsReady) { WeaponSystem.SelectWeapon(); } }
private void OnWeaponSound(Event <WeaponSoundEventPayload> eventArg) { var payload = eventArg.EventData; if (payload.noiseHearer != this) // event not for us { return; } SensoryMemory.UpdateWithSoundSource(payload.noiseMaker); }
public override void Awake() { base.Awake(); _renderer = GetComponent <Renderer>(); var parameters = Parameters.Instance; SensoryMemory = new SensoryMemory(this, parameters.AgentMemorySpan, parameters.FriendlyFire); TargetingSystem = new TargetingSystem(this); WeaponSystem = new WeaponSystem( this, parameters.AgentReactionTime, parameters.AgentAimAccuracy, parameters.AgentAimPersistenceTime); PathPlanner = GetComponent <PathPlanner>(); MaximumHealth = parameters.AgentMaximumHealth; Health = 10; HitIndicatorTimer = (int)parameters.HitFlashTime; Hit = false; Score = 0; GoalArbitrationRegulator = new Regulator(parameters.AgentGoalAppraisalUpdateFrequency); VisionUpdateRegulator = new Regulator(parameters.AgentVisionUpdateFrequency); TargetSelectionRegulator = new Regulator(parameters.AgentTargetingUpdateFrequency); WeaponSelectionRegulator = new Regulator(parameters.AgentWeaponSelectionFrequency); Brain = new Think(this); FieldOfView = parameters.AgentFieldOfView; _normalMaterial = _renderer.materials; _flashMaterial = CreateFlashMaterial(); }
private void Start() { memory = new SensoryMemory(MemoryStayTime); //为记忆创建实例 HearingRange.sensoryObject = this; }
void Start() { memory = sensory.memory; }