Как я могу использовать GameplayKit State Machine для анимации спрайтов? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть две анимации для моего игрока, чтобы бегать и прыгать. Могу ли я управлять этими анимациями, используя конечные автоматы GameplayKit? Если так, то как? В этом проекте я использую SpriteKit и GameplayKit для архитектуры Entity-Component и State Machine.

1 Ответ

1 голос
/ 18 апреля 2020

Вам нужно сначала установить StateMachine и заполнить вашими пользовательскими классами

self.playerStateMachine = GKStateMachine(states: [
    PlayerRunning(player),
    PlayerJumping(player)
])

Затем, когда вам нужно войти в состояние, можно указать:

self.playerStateMachine?.enter(PlayerRunning.self)

В состоянии, в котором вы находитесь может выполнять такие изменения, как:

override func didEnter(from previousState: GKState?) {
    self.player?.run(runAnimation)
}

Пример:

enter image description here

Пожалуйста, посмотрите полный пример здесь: https://github.com/Maetschl/SpriteKitExamples/blob/master/StateMachineAnimation/StateMachineAnimation/GameScene.swift

...