목록공부 (292)
응애맘마조
사각형의 플레이어 오브젝트를 움직였을 때 다른 오브젝트에 충돌했을 경우 움직이게 하는 것이 과제였습니다. //main.cpp #include "stdafx.h" #include "Main.h" void Main::Init() { pl = new ObRect(); pl->scale = Vector2(100.0f, 100.0f); pl->color = Color(0.0f, 0.0f, 0.0f, 0.5f); rc = new ObRect(); rc->SetWorldPosX(300.0f); rc->color = Color(0.0f, 1.0f, 0.0f, 0.5f); rc->scale = Vector2(100.0f, 100.0f); cc = new ObCircle(); cc->SetWorldPosX(-300.0f)..
마우스가 어느 위치에서 충돌 하느냐에 따라 색깔이 변하고 그라데이션을 나타내는 것이 과제였습니다. //main.cpp #include "stdafx.h" #include "Main.h" void Main::Init() { rc = new ObRect(); rc->scale = Vector2(400.0f, 400.0f); } void Main::Release() { SafeDelete(rc); } void Main::Update() { rc->Update(); } void Main::LateUpdate() { if (rc->Intersect(INPUT->GetWorldMousePos())) { Vector2 dis = INPUT->GetWorldMousePos() - rc->GetWorldPos(); di..
게임 제작에 드디어 중요한 충돌을 배우기 시작했습니다. 유틸리티 안에 넣고 사용하고 있습니다. 유틸리티의 정의는 다용도나 다목적이라는 의미를 갖고 있습니다. 프로그래밍에서의 유틸리티는 어떤 cpp에서도 다목적으로 사용할 수 있는 의미를 갖고 있습니다. 예를 들어 삼각함수의 내각을 구하는 DirToRadian이나 이번에 배우고 있는 Intersect에 사용 중인 것을 볼 수 있습니다. 원래 사각형을 그릴 때는 Left, Top, Right, Bottom 이렇게 4개를 알아야 됩니다. 하지만 그렇게 하게 되면 코드도 길어지고 계산해야 되는 것도 많아져서 비효율적입니다. 그래서 좌표의 최솟값(min)과 최댓값(max)을 이용해서 만들기로 했습니다. min은 사각형의 왼쪽 아래(좌표는 -1, -1)입니다. ma..
저번 카메라 이동에 이어서 플레이어 객체 이동에 따라 카메라 범위에 맞춰 이동 하도록 하는 것이 과제였습니다. //main.cpp #include "stdafx.h" #include "Main.h" void Main::Init() { player.SetWorldPos(Vector2(0.0f, 0.0f)); player.scale = Vector2(80.0f, 80.0f); player.rotation = 0.0f; player.isAxis = true; player.isFilled = true; player.isVisible = true; player.color = Color(0.5f, 0.0f, 0.0f, 1.0f); player.pivot = OFFSET_LB; pet.SetParentRT(playe..
오늘도 어제에 이어 카메라에 대해서 배웠습니다. 3D 과정에서는 카메라가 많이 필요합니다. 하지만 지금 배우는 2D 과정에서는 카메라가 여러 개 필요하지 않고 하나만 필요합니다. 그래서 카메라도 Singleton을 사용합니다. (원래 카메라라는 개념은 없습니다. 정점도 없고 단지 출력만 해서 구현을 한 거라 존재하지는 않습니다.) 카메라도 행렬을 사용합니다. enum 안에 SPACE로 해서 WORLD와 SCREEN이 있습니다. WORLD는 카메라입니다. 다른 객체의 움직임에 사용됩니다. SPACE는 공간 이동을 받지 않습니다. 시간의 표시나 UI에 사용됩니다. 카메라는 V, P, VP를 사용합니다. V는 뷰 행렬(역이동 행렬)입니다. 이동 행렬을 사용하고 이동 방향의 반대로 객체가 움직이게 합니다. (그..