응애맘마조
230711 강의 본문
어제 맵과 캐릭터를 로드하는 것을 했고 여기에 경사면이 크면 올라가지 못하게 하려는 것을 하려고 했는데 이 부분은 구현에 실패했고 접선면의 노멀과 각도를 구하는 것을 했었습니다.
#pragma once
class Scene2 : public Scene
{
private:
Grid* grid;
Actor* map;
class Deadpool* dead;
public:
Scene2();
~Scene2();
virtual void Init() override;
virtual void Release() override;
virtual void Update() override;
virtual void LateUpdate() override;
virtual void Render() override;
virtual void PreRender() override;
virtual void ResizeScreen() override;
};
#include "stdafx.h"
#include "Solar.h"
#include "Deadpool.h"
#include "Scene2.h"
Scene2::Scene2()
{
}
Scene2::~Scene2()
{
}
void Scene2::Init()
{
grid = Grid::Create();
map = Actor::Create();
map->LoadFile("Terrain.xml");
dead = new Deadpool();
dead->Init();
Camera::main = (Camera*)dead->root->Find("Cam");
}
void Scene2::Release()
{
}
void Scene2::Update()
{
Camera::main->width = App.GetWidth();
Camera::main->height = App.GetHeight();
Camera::main->viewport.width = App.GetWidth();
Camera::main->viewport.height = App.GetHeight();
//debug
ImGui::Text("FPS: %d", TIMER->GetFramePerSecond());
ImGui::SliderFloat(" App.deltaScale", &App.deltaScale,0.0f,10.0f);
//Hierarchy
ImGui::Begin("Hierarchy");
grid->RenderHierarchy();
dead->Hi();
map->RenderHierarchy();
ImGui::End();
map->Update();
grid->Update();
dead->Update();
}
void Scene2::LateUpdate()
{
Vector3 HitPoint; Vector3 HitNormal;
//////이용하여 맵 안에서 돌아다닐수있는 캐릭터 구현하기
if (Util::RayIntersectMap(dead->GetRay(),
map->Find("Actor"), HitPoint, HitNormal))
{
dead->root->SetWorldPosY(HitPoint.y);
float xz = sqrt(HitNormal.x * HitNormal.x + HitNormal.z * HitNormal.z);
cout << atan2f(HitNormal.y, xz) / TORADIAN<< endl;
}
else
{
cout << "충돌아님" << endl;
}
}
void Scene2::Render()
{
Camera::main->Set();
BLEND->Set(false);
grid->Render();
dead->Render();
map->Render();
}
void Scene2::PreRender()
{
}
void Scene2::ResizeScreen()
{
Camera::main->width = App.GetWidth();
Camera::main->height = App.GetHeight();
Camera::main->viewport.width = App.GetWidth();
Camera::main->viewport.height = App.GetHeight();
}
Main의 헤더와 cpp 파일입니다. LateUpdate의 아크 탄젠트를 사용해서 각 타일 접선면의 노멀 각도를 구하고 이를 이용해서 맵 안에서 돌아다닐 수 있는 캐릭터를 구현하였습니다.
읽어주셔서 감사합니다.
Comments