Вам нужно сначала установить StateMachine и заполнить вашими пользовательскими классами
self.playerStateMachine = GKStateMachine(states: [
PlayerRunning(player),
PlayerJumping(player)
])
Затем, когда вам нужно войти в состояние, можно указать:
self.playerStateMachine?.enter(PlayerRunning.self)
В состоянии, в котором вы находитесь может выполнять такие изменения, как:
override func didEnter(from previousState: GKState?) {
self.player?.run(runAnimation)
}
Пример:
Пожалуйста, посмотрите полный пример здесь: https://github.com/Maetschl/SpriteKitExamples/blob/master/StateMachineAnimation/StateMachineAnimation/GameScene.swift