[SpriteKit #3] SpriteKit을 이용해서 Hello Coding Campus 문자열 애니메이션
이번 튜토리얼은 이전에 작성한 [SpriteKit #2] SpriteKit을 이용해서 Hello Coding Campus 문자열 애니메이션 튜토리얼에서 작성한 소스를 조금 더 추가 해서 사용자가 화면을 탭 하면 레이블이 이동하고 다시 시작한 위치로 돌아가도록 예제를 작성해 보려고 합니다.
1. 레이블 노드 이동
SKAction.moveBy은 SpriteKit 프레임워크에서 제공하는 클래스 중 하나입니다. 이 클래스는 노드의 위치를 상대적으로 이동시키는 액션을 나타냅니다. 보통 애니메이션 및 게임 개발에서 물체를 움직이거나 이동시킬 때 사용됩니다. 예를 들어, 다음은 SKAction.moveBy를 사용하여 노드를 x축과 y축으로 각각 100포인트씩 이동시키는 예입니다:
let moveAction = SKAction.moveBy(x: 100, y: 100, duration: 2.0)node.run(moveAction)
위에 SKAction.moveBy를 사용해서 화면을 터치 했을 때 탭 위치와 현재 위치 간의 차이만큼 노드를 상대적으로 이동하도록 소스를 다음과 같이 추가를 해보겠습니다. 이전 튜토리얼([SpriteKit #2] SpriteKit을 이용해서 Hello Coding Campus 문자열 애니메이션 ) 에서 작성한 소스에서 SKAction.move() 부분을 삭제하고 다음과 같이 소스를 추가합니다.
let moveByAction = SKAction.moveBy(x: sceneLocation.x - label.position.x, y: sceneLocation.y - label.position.y, duration: 1)
label.run(moveByAction)
위에 추가한 소스를 보면 SKAction 클래스의 moveBy(x: y: Duration:) 메서드를 사용하여 "moveBy" 액선을 만들고 액션은 탭 위치와 현재 위치 간의 차이만큼 노드를 이동 합니다.
그리고 실행을 하면 이전 실행 결과와 비슷하게 탭한 위치로 레이블이 이동하게 됩니다.
2. 레이블 노드 원래 위치로 되돌아가기
"SKAction.sequence"는 SpriteKit에서 사용되는 클래스로, 연속적으로 실행되는 여러 개의 액션을 정의하는 데 사용됩니다. 이 클래스를 사용하여 애니메이션 및 기타 동작을 정의할 수 있습니다. "reversed"는 SKAction의 메서드 중 하나로, 시퀀스에 포함된 액션들을 역순으로 실행하도록 합니다.
let moveByReversedAction = moveByAction.reversed()
let moveByActions = [moveByAction, moveByReversedAction]
let moveSequence = SKAction.sequence(moveByActions)
label.run(moveSequence)
그리고 xcode를 실행하면 다음 실행 화면과 같이 레이블 노드는 사용자가 화면에 탭을 한 위치로 이동하고 다시 이전에 있던 자리로 되돌아가게 됩니다.
3. 소스코드
사용한 소스는 GitHub에서 전체 Xcode 프로젝트를 다운로드 할 수 있습니다.