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:
enumpublic enum ZombieState {
Idle,
Chase,
Attack,
Dead
}
public ZombieState currentState;
switch-casevoid Update() {
switch (currentState) {
case ZombieState.Idle:
DoIdle();
break;
case ZombieState.Chase:
DoChase();
break;
case ZombieState.Attack:
DoAttack();
break;
case ZombieState.Dead:
DoDead();
break;
}
HandleStateTransitions();
}
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;
}
â 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