Skip to content

DeveloperAcademy-POSTECH/2024-NC2-A20-GameplayKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2024-NC2-A20-GameplayKit

πŸŽ₯ Youtube Link

(μΆ”ν›„ λ§Œλ“€μ–΄μ§„ 유튜브 링크 μΆ”κ°€)

πŸ’‘ About GameplayKit

GameplayKitμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” κΈ°μˆ λ“€μ„ μ•Œκ²Œ λ˜μ—ˆκ³ , State Machines을 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ˜ μž…λ ₯에 λ”°λ₯Έ
μƒνƒœ μ „ν™˜κ³Ό, 그에 λ”°λ₯Έ 행동 μ •μ˜λ₯Ό μ‰½κ²Œ 관리할 수 μžˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

🎯 What we focus on?

GameplayKitμ—μ„œ State Machinesλ₯Ό ν™œμš©ν•˜κ³ , SpriteKitλ₯Ό μ‚¬μš©ν•˜μ—¬ 2D κ·Έλž˜ν”½μ„ μΆ”κ°€ν•˜κ³  μ‚¬μš©ν•˜μ˜€λ‹€.

πŸ’Ό Use Case

짧은 μ‹œκ°„λ™μ•ˆ 가볍고 μ‰½κ²Œ 즐길 수 μžˆλŠ” 1인용 μž₯μ• λ¬Ό ν”Όν•˜κΈ° κ²Œμž„μ„ λ§Œλ“€μž!

πŸ–ΌοΈ Prototype

  • StartView : 화면을 νƒ­ν•΄ κ²Œμž„μ„ μ‹œμž‘

    Group 14
  • GamePlayView : 산타가 점프해(νƒ­ 제슀쳐) μž₯애물을 ν”Όν•˜λŠ” κ²Œμž„

    Group 17
  • pause & play Button : κ²Œμž„ 속 μ• λ‹ˆλ©”μ΄μ…˜ 쀑지

    • Continue : κ²Œμž„ ν™”λ©΄μœΌλ‘œ λŒμ•„κ°

    • Quit Game : μ΄ˆκΈ°ν™”λ©΄μœΌλ‘œ λŒμ•„κ°

    Group 19
  • GameEndView : μž₯애물에 λΆ€λ”ͺν˜”μ„ 경우 κ²Œμž„μ΄ μ’…λ£Œλ˜κ³ , ν˜„μž¬ 및 졜고 μŠ€μ½”μ–΄λ₯Ό 확인

    Group 16

πŸ› οΈ About Code

// μƒνƒœ 관리 클래슀 예제

import GameplayKit

// κ²Œμž„μ΄ 진행 쀑일 λ•Œμ˜ μƒνƒœ 클래슀
class PlayingState: GKState {

override func didEnter(from previousState: GKState?) {  // μƒˆλ‘œμš΄ μƒνƒœμ— μ§„μž…ν•  λ•Œ 호좜 + μ΄ˆκΈ°ν™” μž‘μ—…μ„ μΆ”κ°€ν•  수 있음
startPlaying()
}
override func update(deltaTime seconds: TimeInterval) {  // 맀 ν”„λ ˆμž„λ§ˆλ‹€ 행동을 호좜
updateGameLogic(deltaTime: seconds)
}
override func willExit(to nextState: GKState) {  // λ‹€λ₯Έ μƒνƒœλ‘œ μ „ν™˜λ  λ•Œ 호좜
stopPlaying()
}

private func startPlaying() {
// κ²Œμž„ ν”Œλ ˆμ΄ μ΄ˆκΈ°ν™” μ½”λ“œ
}
private func updateGameLogic(deltaTime: TimeInterval) {
// κ²Œμž„ 둜직 μ—…λ°μ΄νŠΈ μ½”λ“œ
}
private func stopPlaying() {
// κ²Œμž„ ν”Œλ ˆμ΄ 정리 μ½”λ“œ
} 

}
// μƒνƒœλ¨Έμ‹  μ„€μ • 예제

class GameStateManager: ObservableObject {
    private let stateMachine: GKStateMachine
//pause μƒνƒœ 확인 Bool
   @Published private(set) var isPaused: Bool = false 
    init() {
        stateMachine = GKStateMachine(states: [
            PlayingState(),
            PausedState(),
            EndState()
        ])
// 초기 μƒνƒœλ₯Ό PlayingState둜 μ„€μ •
        stateMachine.enter(PlayingState.self)
    }

//pause μƒνƒœ 확인 λ©”μ„œλ“œ  
func update(deltaTime seconds: TimeInterval) {
        stateMachine.update(deltaTime: seconds)
        isPaused = currentState is PausedState
    }
    func play() {
        stateMachine.enter(PlayingState.self)
    }
    func pause() {
        stateMachine.enter(PausedState.self)
    }
    func end() {
        stateMachine.enter(EndState.self)
    }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages