private void DoActions(StateController2 controller) { foreach (ActionBase2 action in actions) { action.DoAction(controller); } }
public override void DoAction(StateController2 controller) { Rigidbody2D rb2d = controller.GetComponent <Rigidbody2D>(); if (rb2d) { rb2d.velocity = Vector2.zero; } }
private void CheckTransitions(StateController2 controller) { foreach (Transition2 transition in transitions) { if (transition.condition.CheckCondition(controller) != transition.changeWhenFalse) { controller.DoTransition(transition.targetState); break; } } }
public override void DoAction(StateController2 controller) { Rigidbody2D rb2d = controller.GetComponent <Rigidbody2D>(); AIMovementData2 data = controller.GetComponent <AIMovementData2>(); if (rb2d && data) { Vector3 playerPosition = TopdownCharacter.instance.transform.position; Vector3 agentPosition = controller.transform.position; Vector3 moveDirection = playerPosition - agentPosition; rb2d.velocity = moveDirection.normalized * data.moveSpeed; } }
public override bool CheckCondition(StateController2 controller) { AIDetectionData2 data = controller.GetComponent <AIDetectionData2>(); if (data) { Vector3 playerPosition = TopdownCharacter.instance.transform.position; Vector3 agentPosition = controller.transform.position; float distance = Vector2.Distance(playerPosition, agentPosition); return(distance < data.followRange); } return(false); }
public void UpdateState(StateController2 controller) { DoActions(controller); CheckTransitions(controller); }
public abstract bool CheckCondition(StateController2 controller);
public abstract void DoAction(StateController2 controller);