đŸŽ¯ Wat is een State Machine?

Een Finite State Machine (FSM) is een model waarbij een object zich op elk moment in precies ÊÊn toestand (state) bevindt. Het object kan van toestand veranderen op basis van inputs of omstandigheden. Elke toestand bepaalt wat het object doet, en welke overgangen (transities) mogelijk zijn.

We gebruiken voor de FSM een enum en een switch case. Als je even kwijt ben hoe deze werken dan kan je het bekijken op:

🔧 Structuur in C#

1. Definieer je toestanden met een enum

public enum ZombieState {
    Idle,
    Chase,
    Attack,
    Dead
}

2. Houd bij wat de huidige toestand is

public ZombieState currentState;

3. Bepaal gedrag per toestand via switch-case

void Update() {
    switch (currentState) {
        case ZombieState.Idle:
            DoIdle();
            break;
        case ZombieState.Chase:
            DoChase();
            break;
        case ZombieState.Attack:
            DoAttack();
            break;
        case ZombieState.Dead:
            DoDead();
            break;
    }

    HandleStateTransitions();
}

4. Beperk overgangen per toestand (geen chaos)

void HandleStateTransitions() {
    switch (currentState) {
        case ZombieState.Idle:
            if (PlayerInSight()) currentState = ZombieState.Chase;
            break;

        case ZombieState.Chase:
            if (InAttackRange()) currentState = ZombieState.Attack;
            else if (!PlayerInSight()) currentState = ZombieState.Idle;
            break;

        case ZombieState.Attack:
            if (!InAttackRange()) currentState = ZombieState.Chase;
            break;
    }

    if (health <= 0) currentState = ZombieState.Dead;
}

💡 Waarom deze aanpak goed werkt

✔ Simpel en overzichtelijk: goed te begrijpen voor beginners

✔ Gedrag en transities gescheiden: duidelijke structuur

✔ Overgangen per state beperkt: voorkomt bugs & rare sprongen

✔ Unity-vriendelijk: werkt direct in een MonoBehaviour