응애맘마조

230512 강의 본문

공부/3D강의

230512 강의

TH.Wert 2023. 5. 14. 23:08

태양계를 만들었던 과제에 대해 강의를 했었습니다. 제가 했었던 과제와는 조금 다르게 클래스로 만들어서 해결했었습니다.

//Solar.h
#pragma once
class Solar : public Actor
{
public:
    static Solar* Create(string name = "Solar");
private:
    Solar();
    virtual ~Solar();
public:
    void	Update() override;
    void	Release() override;
};
//Solar.cpp
#include "stdafx.h"
#include "Solar.h"

Solar* Solar::Create(string name)
{
	Solar* sun = new Solar();
	sun->mesh = make_shared<Mesh>();
	sun->mesh->LoadFile("1.Sphere.mesh");
	sun->name = name;

	sun->SetWorldPos(Vector3(0, 5, 10));
	sun->Actor::Update();

	{
		GameObject* temp = GameObject::Create("Mercury");
		temp->mesh = make_shared<Mesh>();
		temp->mesh->LoadFile("1.Sphere.mesh");
		temp->SetLocalPos(Vector3(0, 0, 10));

		GameObject* temp2 = GameObject::Create("MercuryBorn");
		sun->AddChild(temp2);
		temp2->AddChild(temp);
	}

	{
		GameObject* temp = GameObject::Create("Venus");
		temp->mesh = make_shared<Mesh>();
		temp->mesh->LoadFile("1.Sphere.mesh");
		temp->SetLocalPos(Vector3(0, 0, -10));

		GameObject* temp2 = GameObject::Create("VenusBorn");
		sun->AddChild(temp2);
		temp2->AddChild(temp);
	}
	return sun;
}
void Solar::Release()
{
	for (auto it = children.begin(); it != children.end(); it++)
	{
		SafeRelease(it->second);
	}
	delete this;
}
Solar::Solar()
{

}

Solar::~Solar()
{
}

void Solar::Update()
{
	if (GameObject* p = Find("MercuryBorn"))
	{
		p->rotation.y += DELTA * 3.14;
	}
	Find("VenusBorn")->rotation.y += DELTA * 3.14;

	Actor::Update();
}

헤더 파일과 cpp파일입니다.

 

태양계는 프레임워크처럼 무엇인가 구현을 하기 위한 도구 같은 것이 아닌 구현 목적에 들어가기 때문에 객체 지향에 의해 프레임워크가 아닌 게임 솔루션 내에 있는 클래스로 따로 분류했습니다.

 

이렇게 해서 WASD와 마우스 오른쪽 버튼을 이용해서 카메라의 위치를 조절해서 확인이 가능합니다. 카메라를 조절한다고는 하지만 DirectX에는 카메라 기능이 없습니다. 2D때도 그랬지만 카메라가 움직이는 것처럼 보이게 하는 것입니다. 그래서 움직이는 것처럼 보여도 그리드나 태양계의 정점이 움직이는 것입니다.

 

또한 카메라의 위치를 어떠한 객체에 붙여서 따라 움직이게 할 수 있습니다. 형체가 있지는 않지만 카메라도 객체로 취급하기 때문입니다.

 

5월 15일은 국비반 휴무일입니다. 따라서 강의 내용이 올라오지 않습니다.

읽어주셔서 감사합니다.

'공부 > 3D강의' 카테고리의 다른 글

230517 강의  (0) 2023.05.17
230516 강의  (0) 2023.05.16
230511 강의  (0) 2023.05.11
230510 강의  (0) 2023.05.11
230509 강의  (0) 2023.05.09