1
OS X Swift SpriteKit 게임을 만들었지 만 아직 프로그래밍에 익숙하지 않습니다. 키를 누르고있는 동안 keyDown 함수를 한 번만 실행하려고합니다. 현재 키를 누르고 있으면 코드가 빠르게 반복됩니다. keyUp 함수에서 유휴 애니메이션 재생으로 돌아갈 것이므로 게임 캐릭터의 실행 애니메이션을 한 번 재생할 수 있도록 (즉, 키가 더 이상 눌러지지 않을 때까지 반복됩니다.) 실행중인 애니메이션을 재생하는 대신 전체 애니메이션을 재생할 시간을 남기지 않고 코드가 너무 빨리 반복되기 때문에 첫 번째 텍스처가 고정됩니다. 한 번만 동작을 트리거 할 수 있습니까?keyDown 함수를 한 번만 실행하십시오.
override func keyDown(theEvent: NSEvent) {
if theEvent.keyCode == 124 {
//Move right
runningRight = true
runRightOrLeft(player)
player.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(RunTextures, timePerFrame: 0.1)))
}
}
override func keyUp(theEvent: NSEvent) {
//Go back to idle animation
player.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(IdleTextures, timePerFrame: 0.1)))
}