A. 오브젝트 설계 #1
1. 오브젝트 틀 설계
a. Object 생성하기
Scene처럼 관리할 Object를 생성해줌
Object는 가장 최상위 객체

📁 03.Object > 📄 ObjectType.h



b. 자식 클래스 작성하기 : Player
위에서 오브젝트 타입으로 정의해준 애들을 만들기

📁 03.Object > 📁 Game > 📄 Player





c. 자식 클래스 작성하기 : Missile
위에서 작성한 Player 코드처럼 동일하게 missile 코드도 작성해주고 (monster도 동일)

📁 03.Object > 📁 Game > 📄 Missile.cpp


d. 자식 클래스 작성하기 : Monster

📁 03.Object > 📁 Game > 📄 Monster.cpp

2. 기능 구현하기
a. GameScene 으로 교체하기
이제부터 devScene에서 테스트하던걸 gameScene으로 옮겨서 테스트함






b. 오브젝트 매니저 만들기
스페이스바를 누르면 미사일을 스폰해줘야 함
- 미사일을 어디서 스폰해야 할까
- 어디서 관리해야 할까 - 씬에서 오브젝트를 관리? 오브젝트 매니저로 관리?
위 두 가지 문제를 해결해야 함 (정석이 없음)
먼저 두 번째 문제에서 유니티, 언리얼에서는 씬에서 오브젝트를 관리하는 방식을 사용

하지만 경우에 따라서는 온라인게임에서는 오브젝트 매니저로 오브젝트를 관리할 수 있음
➡ 이번 강의에서는 오브젝트 매니저를 생성해서 관리하는 방식으로 제작




💙 참조값으로 넘기는 이유ObjectManager.h 파일을 보면 이렇게 외부로 목록을 뱉어주는걸 참조값으로 넘기고 있음
이유는 복사비용을 아끼기 위해 원본을 가지고 내보내고 있음근데 이렇게 GameScene.cpp 에서 사용되는 Update()함수에서 위에서 가져온 참조값을 순회한다면 위험함
순회하다 말고 오브젝트가 생기거나 삭제되면 갑자기 이렇게 중간에 코드가 되어서 에러가 남!
따라서 두가지 방법으로 해결할 수 있음
1) 생성 예약을 해서 예약 순으로 일감을 처리
2) 객체를 복사해서 복사된 부분만 순회하기따라서 참조값이 아닌 복사객체로 사용해야 에러가 나지 않는다!
c. GameScene에 ObjectManager 등장시키기


d. 미사일 코드 작성하기
1) 미사일 생성하기
📁 03.Object > 📁 Game > 📄 Player.cpp


2) 미사일 소멸하기
생성(발사)까지는 잘 되는데, 그렇다면 소멸은 어떻게 해야할까?

위와같이 나를 다른사람에게 요청해 자폭을 하게 만든다면
꼭 끝나자마자 리턴을 해야함!!
➡ 날아가고 사용하면 안되는 객체의 멤버변수들 때문에 꼭 바로 리턴해주기
3) 몬스터 생성하기
위에서 만들어준 간단한 몬스터 코드를 생성해서 미사일을 맞춰봄


4) 미사일 적중시키기
미사일이 몬스터에 적중해 충돌처리를 해줘야 함

큰 틀은 완성
여기서 게임수학을 붙여 미사일이 나아가는 방식,
몬스터도 인공지능으로 움직이면 우리가 시중에서 하는 게임과 동일!!
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -
어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프
www.inflearn.com
'운영체제 > 입출력 시스템 : Windows API' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] Windows API 입문 : 리소스 매니저 (93강) (0) | 2024.04.08 |
---|---|
[게임 프로그래머 입문 올인원] Windows API 입문 : 리소스(92강) (0) | 2024.04.08 |
[게임 프로그래머 입문 올인원] Windows API 입문 : 더블 버퍼링 (89강) (1) | 2024.04.06 |
[게임 프로그래머 입문 올인원] Windows API 입문 : Scene과 SceneManager (88강) (1) | 2024.04.06 |
[게임 프로그래머 입문 올인원] Windows API 입문 : 프레임워크 제작 (87강) (0) | 2024.04.01 |