Wydaje mi się że chyba trochę tutaj namieszałem, bardzo trudno się połapać w tym fragmencie kodu, nie wiem czy to przez to jak zbudowałem te masę ifów czy powinienem rozwiązać ten problem w inny sposób. Generalnie jest to fragment stanu przeciwnika w grze IDLE, i przejścia ze stanu IDLE do innych stanów opierają się też na stanie jaki byl poprzednio:
if (!isExitingState)
{
if (stateMachine.previousState == enemy.meleeAttackState)
{
if (!isPlayerDetected)
{
if (isIdleTimeOver)
{
if (!isDectectingLedge && !flipAfterIdle)
{
core.Movement.Flip();
}
stateMachine.ChangeState(enemy.moveState);
}
}
else
{
if (isIdleTimeOver)
{
if (isEnemyInRangeDetected && isIdleTimeOver)
{
stateMachine.ChangeState(enemy.meleeAttackState);
}
else if (isDectectingLedge && !isEnemyInRangeDetected)
{
stateMachine.ChangeState(enemy.chargeState);
}
}
}
}
else
{
if (!isPlayerDetected)
{
if (isIdleTimeOver)
{
if (!isDectectingLedge && !flipAfterIdle)
{
core.Movement.Flip();
}
stateMachine.ChangeState(enemy.moveState);
}
}
else
{
if (isEnemyInRangeDetected && isIdleTimeOver)
{
stateMachine.ChangeState(enemy.meleeAttackState);
}
else if (isPlayerDetected && isDectectingLedge && !isEnemyInRangeDetected)
{
stateMachine.ChangeState(enemy.chargeState);
}
}
}
}