raylib:flappy_bird_게임_장애물_만들기
flappy bird 게임 장애물 만들기
문서의 이전 판입니다!
−목차
준비
장애물 클래스 만들기
1. 개념
2. obstacle.h
3. obstacle.cpp
가. Init() 함수
나. Update() 함수
다. GetPipePosition() 함수
라. Draw() 함수
Game 클래스에서 구현하기
1. 전역 변수 선언하기
2. 장애물 초기화하기
3. Update() 로직
가. 장애물을 새롭게 만드는 로직
나. 장애물 제거하는 로직
4. Draw() 로직
5. 결과
장애물을 통과하면 점수를 올리기
1. 변수 추가하기
2. 장애물 통과 로직 만들기
가. 플레이어의 현재위치를 Rectangle 값으로 반환하기
나. 플레이어와 파이프의 x 값을 비교하는 함수를 만들기
3. game.cpp에 구현하기
가. update() 메서드
나. draw() 메서드
장애물과의 컬리젼 만들기
1. 기본 개념
2. obstacle.cpp
3. 플레이어 로직
가. bird.h
나. bird.cpp
(1) 현재 충돌을 받을지 여부
다음과 같이 현재 플레이어가 충돌을 받을지 여부를 세팅하고, 이 값을 리턴하는 코드를 구현하자
void Bird::SetInvincible(bool flag) { isInvincible = flag; } bool Bird::GetInvincible() { return isInvincible; }
(2) 일정한 시간이 지나면 다시 충돌을 받게 해주기
Update() 메서드에 다음과 같이 코드를 넣으면 플레이어가 다시 일정한 시간이 지나면 충돌을 받게 해줄 수 있다.
void Bird::Update() { downSpeed += GRAVITY; pos.y += downSpeed; CheckCollision(); if (isInvincible) { timer++; if (timer > MaxTimer) { timer = 0; isInvincible = false; } } }
(3) 플레이어 상태에 따라 플레이어를 달리 그리기
다음과 같이 플레이어 상태에 따라 플레이어의 색상을 달리했다.
// 플레이어 그리기 void Bird::Draw() { if (isInvincible) { DrawRectangle(pos.x - halfLength, pos.y - halfLength, halfLength * 2, halfLength * 2, GRAY); // 플레이어가 무적일 떄 }else { DrawRectangle(pos.x - halfLength, pos.y - halfLength, halfLength * 2, halfLength * 2, DARKGREEN); // 평상시 } }
4. game.cpp
5. 결론
게임 리셋하기
1. 리셋함수
2. 리셋함수 불러오기
3. 결론
raylib/flappy_bird_게임_장애물_만들기.1697373811.txt.gz · 마지막으로 수정됨: 2023/10/15 21:43 (바깥 편집)
로그인