반응형 -----ETC-----/C++ 게임 개발 시리즈31 [C++ 게임 개발 시리즈] Day 13: 충돌 처리와 반응 충돌 처리와 반응충돌 처리와 반응은 물리 기반 게임에서 중요한 요소입니다. 오늘은 Box2D를 사용하여 충돌을 처리하고, 충돌에 반응하는 방법을 학습하겠습니다.충돌 처리 기초Box2D는 충돌을 감지하고 처리하기 위해 충돌 콜백 시스템을 제공합니다. 이 시스템을 사용하면 두 물체가 충돌했을 때 특정 동작을 수행할 수 있습니다.Box2D 충돌 콜백Box2D에서 충돌을 처리하려면 b2ContactListener 클래스를 상속하고, BeginContact와 EndContact 메서드를 재정의합니다. 이 메서드들은 충돌이 시작되거나 끝날 때 호출됩니다.충돌 콜백 클래스 정의#include #include #include // 픽셀을 미터로 변환하는 비율const float SCALE = 30.0f;// 사용자 정.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 10: 애니메이션 기법 (프레임 기반 애니메이션) 애니메이션 기법 (프레임 기반 애니메이션)애니메이션은 게임에서 캐릭터의 움직임, 환경의 변화 등을 생동감 있게 표현하는 중요한 요소입니다. 오늘은 프레임 기반 애니메이션 기법을 사용하여 애니메이션을 구현하는 방법을 학습하겠습니다.프레임 기반 애니메이션프레임 기반 애니메이션은 여러 개의 이미지(프레임)를 순차적으로 표시하여 움직임을 표현하는 방식입니다. 각 프레임은 일정한 시간 동안 화면에 표시되며, 모든 프레임이 순서대로 표시되면 하나의 애니메이션이 완성됩니다.애니메이션 구현 예시다음 예제에서는 SFML을 사용하여 간단한 캐릭터 애니메이션을 구현합니다.텍스처와 스프라이트 설정먼저, 애니메이션에 사용할 텍스처와 스프라이트를 설정합니다.#include #include #include #include #inc.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 11: 타일 맵과 맵 에디터 사용법 타일 맵과 맵 에디터 사용법타일 맵은 작은 이미지를 배열하여 큰 지도를 만드는 기술입니다. 게임 개발에서 주로 배경이나 맵 디자인에 사용됩니다. 오늘은 타일 맵을 생성하고, 이를 관리하기 위한 맵 에디터 사용법을 학습하겠습니다.타일 맵 기본 개념타일 맵은 여러 개의 작은 이미지를 사용하여 큰 맵을 구성합니다. 각 타일은 동일한 크기를 가지며, 타일 맵은 2차원 배열로 표현됩니다.타일(Tile): 맵을 구성하는 기본 단위입니다. 타일은 주로 정사각형이나 직사각형 모양을 가집니다.타일셋(Tileset): 여러 타일 이미지를 하나의 큰 이미지로 모아 놓은 것입니다.타일 맵(Tile Map): 타일을 배열하여 큰 지도를 만든 것입니다. 2차원 배열로 표현됩니다.SFML을 사용한 타일 맵 구현타일셋 이미지먼저, .. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 8: 2D 그래픽 기본 개념 2D 그래픽 기본 개념2D 그래픽은 게임 개발에서 시각적 요소를 표현하는 중요한 부분입니다. 오늘은 2D 그래픽의 기본 개념을 학습하고, 이를 SFML을 사용하여 구현하는 방법을 알아보겠습니다.2D 그래픽 기본 요소스프라이트(Sprite):스프라이트는 게임에서 캐릭터, 아이템, 배경 등의 이미지를 나타내는 2D 비트맵입니다.스프라이트는 텍스처(Texture)를 사용하여 렌더링됩니다.텍스처(Texture):텍스처는 스프라이트에 적용되는 이미지입니다.텍스처는 이미지 파일에서 로드하여 스프라이트에 매핑됩니다.애니메이션(Animation):애니메이션은 여러 스프라이트 프레임을 순차적으로 표시하여 움직임을 표현하는 기술입니다.프레임 기반 애니메이션과 보간 기반 애니메이션이 있습니다.타일 맵(Tile Map):타일.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 9: 스프라이트와 텍스처 스프라이트와 텍스처스프라이트와 텍스처는 2D 게임 개발에서 중요한 그래픽 요소입니다. 스프라이트는 게임에서 캐릭터, 아이템, 배경 등의 이미지를 나타내는 2D 비트맵이며, 텍스처는 스프라이트에 적용되는 이미지입니다. 오늘은 스프라이트와 텍스처를 다루는 방법을 학습하겠습니다.텍스처텍스처는 이미지 파일에서 로드하여 스프라이트에 매핑됩니다. 텍스처는 sf::Texture 클래스를 사용하여 로드하고 관리합니다.텍스처 로드 및 사용 예시#include #include #include #include int main() { // 창 생성 sf::RenderWindow window(sf::VideoMode(800, 600), "Texture Example"); // 텍스처 로드 sf::Textu.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 6: 첫 번째 게임 프로젝트: 간단한 2D 게임 만들기 (3) 점수 시스템과 여러 적 추가이번 단계에서는 점수 시스템을 추가하고, 여러 적이 등장하도록 구현하겠습니다. 이를 통해 게임이 좀 더 도전적이고 흥미로워질 것입니다.점수 시스템 추가점수 변수 정의:main.cpp 파일에 점수 변수를 정의합니다.int score = 0;sf::Font font;sf::Text scoreText;폰트 로드 및 점수 텍스트 설정:폰트를 로드하고, 점수를 표시할 텍스트를 설정합니다.// 메인 함수 내부에 추가 (창 생성 아래)if (!font.loadFromFile("arial.ttf")) { std::cerr 점수 업데이트 및 표시:게임 루프 내에서 점수를 업데이트하고, 화면에 표시합니다.// 메인 함수의 게임 루프 내에 추가 (충돌 처리 아래)score++;scoreTex.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 7: 게임 루프와 기본 게임 구조 게임 루프와 기본 게임 구조게임 루프는 게임이 실행되는 동안 지속적으로 반복되는 코드 블록입니다. 게임 루프에서는 입력 처리, 게임 로직 업데이트, 그래픽 렌더링 등이 수행됩니다. 오늘은 게임 루프의 주요 구성 요소와 기본 게임 구조를 이해하겠습니다.게임 루프의 주요 구성 요소입력 처리 (Input Handling):사용자의 입력을 받아 처리합니다. 키보드, 마우스, 게임패드 등 다양한 입력 장치의 입력을 처리할 수 있습니다.게임 로직 업데이트 (Game Logic Update):게임의 상태를 업데이트합니다. 플레이어의 이동, 적의 행동, 충돌 처리 등 게임의 주요 로직이 이 단계에서 처리됩니다.그래픽 렌더링 (Rendering):게임 화면을 업데이트합니다. 게임의 시각적 요소를 그려 화면에 표시합니다... 2024. 8. 1. [C++ 게임 개발 시리즈] Day 4: 첫 번째 게임 프로젝트: 간단한 2D 게임 만들기 (1) 간단한 2D 게임 만들기오늘부터 3일에 걸쳐 간단한 2D 게임을 만들어보겠습니다. 이 프로젝트를 통해 2D 게임 개발의 기본적인 흐름을 이해하고, 게임 루프, 그래픽, 입력 처리 등을 다룰 것입니다. 이 게임은 플레이어가 움직이는 사각형 캐릭터를 조작하여 적을 피하는 간단한 게임입니다.프로젝트 준비프로젝트 설정Visual Studio에서 프로젝트 생성:Visual Studio를 열고, 새 C++ 빈 프로젝트를 생성합니다.프로젝트 이름을 Simple2DGame으로 지정합니다.SFML 설정:SFML 라이브러리를 설치하고 프로젝트에 포함시킵니다. 이전 날 설정한 SFML 설치 및 설정을 참조하세요.프로젝트 속성에서 Additional Include Directories에 SFML의 include 디렉토리를 추.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 5: 첫 번째 게임 프로젝트: 간단한 2D 게임 만들기 (2) 적 추가 및 충돌 처리이번 단계에서는 적 캐릭터를 추가하고, 플레이어와 적이 충돌했을 때 게임 오버 상태를 구현하겠습니다.적 캐릭터 추가적 캐릭터 정의:main.cpp 파일에 적 캐릭터를 정의합니다.적 캐릭터는 플레이어 캐릭터와 같은 방식으로 사각형 모양으로 만듭니다.// 메인 함수 내부에 추가 (플레이어 캐릭터 정의 아래)sf::RectangleShape enemy(sf::Vector2f(50.0f, 50.0f));enemy.setFillColor(sf::Color::Red);enemy.setPosition(200.0f, 150.0f); // 임의의 위치에 배치적 캐릭터 이동:간단한 AI를 사용하여 적이 플레이어를 따라다니도록 만듭니다.적의 속도를 정의하고, 매 프레임마다 플레이어의 위치를 향해 이동합.. 2024. 8. 1. 이전 1 2 3 4 다음 반응형