DirecX12 | Lecture 12. Input과 Timer (인프런)
DirectX12 강의 12. Input과 Timer를 정리한 글입니다.
DirecX12 | Lecture 12. Input과 Timer (인프런)
강의 정보 🎓
- 강의명: C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈 - Part2: 게임 수학과 DirectX12
- 플랫폼: 인프런
- 현재 섹션: Lecture 12 – Input과 Timer
- 주요 내용: 게임에서 사용자 입력 처리와 시간 기반 로직을 구현하기 위한 Input 시스템과 Timer 시스템을 도입하였다.
1. Input 클래스 구현
Input
클래스를 Engine 프로젝트에 추가한다.- 주요 멤버 함수:
GetButton()
: 키가 눌리고 있는 상태 확인GetButtonDown()
: 처음 눌린 프레임 확인GetButtonUp()
: 처음 떼어진 프레임 확인
- 매 프레임마다
Input::Update()
호출이 필요하다.
2. Engine에 Input 통합
Engine
클래스에Input
멤버를 추가한다.Init()
에서 초기화 작업을 해줘야 한다.Update()
에서 매 프레임마다input->Update()
을 호출한다.
3. Game에서 입력 사용
Game::Update()
내에서 사용자 입력을 감지한다.- 예: 방향키를 누르면 오브젝트의 오프셋을 변경
1
2
if (INPUT->GetButton(KEY_TYPE::W))
offset.y += speed; // deltaTime이 추가로 필요하다!
4. Timer 클래스 구현
- 시간 측정을 위한
Timer
클래스를 생성한다. - 주요 기능:
Update()
: 프레임 간 시간 계산ShowFps()
: FPS 표시
5. Engine에 Timer 통합
Engine
클래스에Timer
멤버를 추가한다.Init()
에서 초기화Update()
에서timer->Update()
호출한다.- FPS 표시를 위해
ShowFps()
함수를 통해 프로그램 상단에 FPS를 표시한다.
6. Delta Time 기반 움직임
Game::Update()
에서 오프셋 변경 시 델타 타임을 반영한다.- 프레임 속도에 영향을 받지 않고 동일한 움직임을 보장한다.
1
2
if (INPUT->GetButton(KEY_TYPE::W))
offset.y += speed * deltaTime;
요약
항목 | 설명 |
---|---|
Input 클래스 | 키보드 입력 처리 (GetButton 등) |
Timer 클래스 | 델타 타임 및 FPS 계산 |
Engine 통합 | Init, Update, ShowFps 구현 |
Game 활용 | 실시간 입력과 시간 기반 로직 구현 가능 |
느낀점 📝
느낀점 💡 시간 함수와 사용자의 입력은 그래도 많이 다룬 내용에다가 최소한의 코드만 작성되어있어 나중에 추가하는 작업이 있으면 좋을 것 같다. 또한 입력의 경우 커맨드 패턴과 같은 디자인 패턴도 적용해보자.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.