public override bool ConditionToSwitch(AIPlane aIPlane) { if (!aIPlane.IsAttackInCoolDown) { return(true); } return(false); }
public override bool ConditionToSwitch(AIPlane aIPlane) { if (Vector2.Distance(aIPlane.transform.position, aIPlane.enemyPlane.transform.position) > ((AIPlaneSOData)aIPlane.planeData).minDistanceToAttack) { return(true); } return(false); }
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); }
public override bool ConditionToSwitch(AIPlane aIPlane) { if (aIPlane.IsAttackInCoolDown || ((AIPlaneSOData)aIPlane.planeData).maxActiveTimeOnScreen < aIPlane.ActiveTime) { return(true); } return(false); }
///<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); }
///<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; } } }
public override void UpdateMoveDirection(AIPlane aIPlane) { moveTowards = aIPlane.enemyPlane.transform.position - aIPlane.transform.position; }
public virtual bool ConditionToForceDie(AIPlane plane) { return((((AIPlaneSOData)plane.planeData).maxActiveTimeOnScreen < plane.ActiveTime || forceEvade) && WorldSpaceGameBoundary.Instance.IsPointOutsideCameraView(plane.transform.position)); }
///<description>Update Direction to move towards</description> public virtual void UpdateMoveDirection(AIPlane aIPlaneT) { moveTowards = Vector2.zero; }
///<description>Condition to switch to current State</description> public virtual bool ConditionToSwitch(AIPlane aIPlaneT) { return(false); }
///<description>Condition to fire</description> public virtual bool ShouldOrNotFire(AIPlane aIPlaneT) { return(false); }