Print Friendly and PDF

전체 글 213

[유니티 엔진 제작] Layer

Layer을 이용해 그리는 순서를 정할 예정 1. Enum 클래스 추가//DirectX_Enums.h#pragma oncenamespace dir{ enum class eLayerType { None, BackGround, Player, Max = 16, };} 2. Layer 클래스 추가#pragma once//DirectX_Layer.h#include "DirectX_Entity.h"#include "CommonInclude.h"#include "DirectX_GameObject.h"namespace dir{ class Layer : public Entity { public: Layer(); ~Layer(); virtual void Initialize(); //실행 virtual voi..

[유니티 엔진 제작] 씬 변경 및 초기화

1. PlayScene, TitleScene 코드 추가//DirectX_PlayScene.cpp, DirectX_TitleScene.cppvoid TitleScene::LateUpdate(){ Scene::LateUpdate(); //키 입력 시 씬 이동하는 거 추가 if (Input::GetKeyDown(eKeyCode::N)) { SceneManager::LoadScene(L"PlayScene"); }}- N을 누르면 씬 이동 되는거 확인 가능 2. 씬 초기화//DirectX_Scene.h#pragma once#include "DirectX_Entity.h"#include "DirectX_GameObject.h"namespace dir{ //각 이름 등 사용할 것이기 때문에 상속 받아서 사용..

[유니티 엔진 제작] Vector2, GdiPlus

GidPlus란?- Windows 프로그래밍에서 그래픽을 그리는데 사용되는 라이브러리- 쉽게 설명하자면, 화면에 그림을 그리기 위한 도구 상자라 생각하면 됨  1. CommonInclude.h 코드 수정#pragma once#include #include #include #include #include #include #include //추가사항#include "DirectX_Math.h"#include #include #pragma comment(lib, "Msimg32.lib")#pragma comment(lib, "winmm.lib")#include #pragma comment(lib, "gdiplus.lib") 2. DirectX_Math.h 코드 추가//DirectX_Math.h#pragma o..

[유니티 엔진 제작] 컴퍼넌트 구조

컴퍼넌트 구조- 내가 필요할때마다 추가하여 사용하는 방식 1. Component 클래스 추가//DirectX_Component.h#pragma once#include "DirectX_Entity.h"namespace dir{ class GameObject; class Component : public Entity { public: Component(); ~Component(); virtual void Initialize(); virtual void Update(); virtual void LateUpdate(); virtual void Render(HDC hdc); void SetOwner(GameObject* owner) { mOwner = owner; } GameObject* GetOw..

[유니티 엔진 제작] Scene 제작

1. Application.h 코드에 있는 mGameObject제거- 각 Scene에 GameObject를 넣어 씬에서 Object를 관리하도록 할 예정 2. 클래스 및 헤더파일 추가- Entity, Scene, SceneManager 클래스 및 헤더 추가 3. Enetity 코드- 구분용 이름이 필요하기 때문에 wstring mName을 추가- Get할때는 복사가 되지 않도록 &를 이용해 참조 사용 4. Scene 코드- Entity 클래스 상속- 각 씬에서 Initialize, Update, LateUpdate, Render를 해야하므로 추가- 각 씬에서 관리할 오브젝트를 받을 mGameObjects 변수 추가- 이전 Application에서 mGameObjects관련하여 처리했던 부분을 Scene에..

[유니티 엔진 제작] GameObject 코드 개선

1. Application.h 코드- 기존 Gameobject mPlayer 변수 제거 후 여러 오브젝트를 관리할 수 있도록 vector 변수 추가 2. Application.cpp 코드 Initialize함수 수정- 배열을 통해 여러개 생성- SetPosition함수에 rand(랜덤함수)를 이용해 위치 랜덤으로 지정(한 곳 생성 방지) 3. 함수 묶기 및 랜더- 묶어주기 위한 clearRenderTarget, copyRenderTarget함수 추가- GameOjbect의 Render, Update 반복문을 통해 실행 4. 결과

[유니티 엔진 제작] 더블 버퍼링

1. 더블 버퍼링이란?- 두 도화지를 번갈아가며 랜더링하는 기법 2. 사용 이유- 흰 도화지에 그려진 내용(검은색 잔상)을 지워주기 위해 방법- 하나의 도화지에 생성하고 흰색으로 덮어줄 경우 깜빡 거림이 생김 3. 스크롤 화면 크기 정의- mWidth, mHeight 변수 추가 및 초기화 처리- main에 화면 크기 정의 후 Initialize에 넣어주기 *화면크기 참고이미지 4. 도화지가 될 BackBuffer추가 5. 초기화 함수 수정- 새로운 도화지를 생성 후 서로 연결 7. 그려주기 - 정석대로면 두 도화지를 번갈아가며 랜더링 하지만 현재의 방법은 mBackHdc에 그린걸 원본 DC에 복사하는 방식으로 진행 *결과- 깜빡임도 없고 잔상도 없어짐 #############################..

[유니티 엔진 제작] Time 클래스

1. 코드의 문제점- 현재 코드의 움직임에 문제점은 컴퓨터마다 다르게 움직이게 됨- DeltaTime을 만들어 보정 2. Time 클래스 추가 - 진동수를 이용해 시간 계산 가능- CPU 고유 진동수, PC 시작 후 고유 진동수, 현재 진동수 추가 3. 진동수를 이용한 시간 값 체크- 움직일때마다 DeltaTime값 곱해주기- cpu의 진동수를 이용하여 현재 시간 값 체크 4. 프레임 계산 및 결과- 시간값을 역수로 취하여 계산하면 프레임이 됨  #이미지 출처https://inyongs.tistory.com/18

[유니티 엔진 제작] Input 클래스

1. 클래스 추가  2. .h, .cpp 코드 추가- .h파일에 enum class로 eKeyStaete(키 상태), eKeyCode(클릭한 키) 추가- struct로 Key를 추가하여 각 상태와 눌렀는지 판단하는 변수 추가- GeyKeyDown, GeyKeyUp, GeyKey 그리고 Key를 담은 vector을 static(정적 변수)로 어디서든 한번 할당되면 사용할 수 있도록 추가 3. Input.cpp파일 Update문을 통해 키 입력 받아오기- char형으로 받아오기 위해 ASCII로 키 배열 생성 - Update함수에 for문을 통해 입력한 키에 대한 정보를 가져와 키 눌렀는지 여부에 따른 상태 저장- 헤더 파일에 GetKeyDown, GetKeyUp, GetKey함수에 returnd으로 각 상..