コード例 #1
0
 public override bool ConditionToSwitch(AIPlane aIPlane)
 {
     if (!aIPlane.IsAttackInCoolDown)
     {
         return(true);
     }
     return(false);
 }
コード例 #2
0
 public override bool ConditionToSwitch(AIPlane aIPlane)
 {
     if (Vector2.Distance(aIPlane.transform.position, aIPlane.enemyPlane.transform.position) > ((AIPlaneSOData)aIPlane.planeData).minDistanceToAttack)
     {
         return(true);
     }
     return(false);
 }
コード例 #3
0
 public override bool ShouldOrNotFire(AIPlane aIPlane)
 {
     if (Vector2.Angle(aIPlane.enemyPlane.transform.position - aIPlane.transform.position, aIPlane.transform.up) < ((AIPlaneSOData)aIPlane.planeData).FOVToAttack)
     {
         return(true);
     }
     return(false);
 }
コード例 #4
0
 public override bool ConditionToSwitch(AIPlane aIPlane)
 {
     if (aIPlane.IsAttackInCoolDown || ((AIPlaneSOData)aIPlane.planeData).maxActiveTimeOnScreen < aIPlane.ActiveTime)
     {
         return(true);
     }
     return(false);
 }
コード例 #5
0
 ///<description>Updating Controls and States of the AI</description>
 public override void UpdateControls(Plane plane)
 {
     currentAIPlane = (AIPlane)plane;
     if (ConditionToForceDie(currentAIPlane))
     {
         plane.DisablePlane();
     }
     //update State here
     UpdateState(currentAIPlane);
     currentState.UpdateMoveDirection(currentAIPlane);
     base.UpdateControls(plane);
 }
コード例 #6
0
 ///<description>Update State Machine</description>
 void UpdateState(AIPlane aiPlane)
 {
     //In sentence: Attack, if in range and not in cooldown. Evade, if in cooldown. Approach, if not in cooldown and far away
     if (evadePlaneState.ConditionToSwitch(aiPlane) || forceEvade)
     {
         currentState = evadePlaneState;
     }
     else
     {
         if (approachPlaneState.ConditionToSwitch(aiPlane))
         {
             currentState = approachPlaneState;
         }
         else
         {
             currentState = attackPlaneState;
         }
     }
 }
コード例 #7
0
 public override void UpdateMoveDirection(AIPlane aIPlane)
 {
     moveTowards = aIPlane.enemyPlane.transform.position - aIPlane.transform.position;
 }
コード例 #8
0
 public virtual bool ConditionToForceDie(AIPlane plane)
 {
     return((((AIPlaneSOData)plane.planeData).maxActiveTimeOnScreen < plane.ActiveTime || forceEvade) &&
            WorldSpaceGameBoundary.Instance.IsPointOutsideCameraView(plane.transform.position));
 }
コード例 #9
0
 ///<description>Update Direction to move towards</description>
 public virtual void UpdateMoveDirection(AIPlane aIPlaneT)
 {
     moveTowards = Vector2.zero;
 }
コード例 #10
0
 ///<description>Condition to switch to current State</description>
 public virtual bool ConditionToSwitch(AIPlane aIPlaneT)
 {
     return(false);
 }
コード例 #11
0
 ///<description>Condition to fire</description>
 public virtual bool ShouldOrNotFire(AIPlane aIPlaneT)
 {
     return(false);
 }