コード例 #1
0
 public override bool Decide(vIFSMBehaviourController fsmBehaviour)
 {
     if (fsmBehaviour.aiController is vIControlAIShooter)
     {
         vIControlAIShooter shooter = (fsmBehaviour.aiController as vIControlAIShooter);
         return(shooter.shooterManager ? shooter.shooterManager.isShooting || shooter.isAttacking : false);
     }
     return(true);
 }
コード例 #2
0
        protected virtual void ControlAttack(vIFSMBehaviourController fsmBehaviour, vIControlAIShooter combat, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
        {
            switch (executionType)
            {
            case vFSMComponentExecutionType.OnStateEnter:
                InitAttack(combat);
                break;

            case vFSMComponentExecutionType.OnStateUpdate:
                HandleAttack(fsmBehaviour, combat);
                break;

            case vFSMComponentExecutionType.OnStateExit:
                FinishAttack(combat);
                break;
            }
        }
コード例 #3
0
 protected virtual void HandleAttack(vIFSMBehaviourController fsmBehaviour, vIControlAIShooter combat)
 {
     combat.AimToTarget();
     if (!combat.isAiming)
     {
         return;
     }
     if (useRandomAttackType)
     {
         if (InRandomTimer(fsmBehaviour, minMaxTimeToTryStrongAttack.x, minMaxTimeToTryStrongAttack.y))
         {
             DoAttack(combat, Random.Range(0f, 100f) <= chanceToStrongAttack, overrideAttackID ? attackID : -1, forceCanAttack);
         }
         else
         {
             DoAttack(combat, false, overrideAttackID ? attackID : -1, forceCanAttack);
         }
     }
     else
     {
         DoAttack(combat, useStrongAttack, overrideAttackID ? attackID : -1, forceCanAttack);
     }
 }
コード例 #4
0
 protected virtual void FinishAttack(vIControlAIShooter combat)
 {
     combat.isInCombat = false;
     combat.ResetAttackTime();
 }
コード例 #5
0
 protected virtual void DoAttack(vIControlAIShooter combat, bool isStrongAttack = false, int attackId = -1, bool forceCanAttack = false)
 {
     combat.Attack(isStrongAttack, attackId, forceCanAttack);
 }
コード例 #6
0
 protected virtual void InitAttack(vIControlAIShooter combat)
 {
     combat.isInCombat = true;
     combat.InitAttackTime();
 }