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();
        }
示例#4
0
 private void Start()
 {
     memory = new SensoryMemory(MemoryStayTime);     //为记忆创建实例
     HearingRange.sensoryObject = this;
 }
示例#5
0
 void Start()
 {
     memory = sensory.memory;
 }