private void DoActions(StateController2 controller)
 {
     foreach (ActionBase2 action in actions)
     {
         action.DoAction(controller);
     }
 }
Exemple #2
0
    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);
 }
Exemple #7
0
 public abstract bool CheckCondition(StateController2 controller);
 public abstract void DoAction(StateController2 controller);