コード例 #1
0
 public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
 {
     if (fsmBehaviour.aiController != null)
     {
         if (fsmBehaviour.aiController.HasComponent <vAINoiseListener>())
         {
             fsmBehaviour.aiController.SetSpeed(speed);
             var    noiseListener = fsmBehaviour.aiController.GetAIComponent <vAINoiseListener>();
             vNoise noise         = null;
             if (findNewNoise)
             {
                 if (specificType)
                 {
                     noise = noiseListener.GetNearNoiseByTypes(noiseTypes);
                 }
                 else
                 {
                     noise = noiseListener.GetNearNoise();
                 }
             }
             else
             {
                 noise = noiseListener.lastListenedNoise;
             }
             if (noise != null)
             {
                 fsmBehaviour.aiController.MoveTo(noise.position);
                 if (lookToNoisePosition)
                 {
                     fsmBehaviour.aiController.LookTo(noise.position, offsetLookHeight: 0);
                 }
             }
         }
     }
 }
コード例 #2
0
 public override bool Decide(vIFSMBehaviourController fsmBehaviour)
 {
     if (fsmBehaviour.aiController != null)
     {
         if (fsmBehaviour.aiController.HasComponent <vAINoiseListener>())
         {
             var    noiseListener = fsmBehaviour.aiController.GetAIComponent <vAINoiseListener>();
             vNoise noise         = null;
             if (findNewNoise)
             {
                 if (specificType)
                 {
                     noise = noiseListener.GetNearNoiseByTypes(noiseTypes);
                 }
                 else
                 {
                     noise = noiseListener.GetNearNoise();
                 }
             }
             else
             {
                 noise = noiseListener.lastListenedNoise;
             }
             if (noise != null)
             {
                 return(CompareDistance(Vector3.Distance(fsmBehaviour.aiController.transform.position, noise.position), distance));
             }
         }
     }
     return(true);
 }