응애맘마조

이동 제한 본문

공부/2D과제

이동 제한

TH.Wert 2023. 1. 17. 16:41

사각형 내 오브젝트의 이동 범위를 한정하는 게 과제였습니다. Saturate를 사용했습니다.

//main.cpp
#include "stdafx.h"
#include "Main.h"

void Main::Init()
{
	lim = new ObRect();
	lim->scale = Vector2(300.0f, 300.0f);
	lim->color = Color(0.0f, 0.0f, 0.0f, 1.0f);
	lim->isFilled = false;

	cam = new ObRect();
	cam->scale = Vector2(100.0f, 100.0f);
	cam->color=Color(0.0f, 0.0f, 0.0f, 1.0f);
	cam->isFilled = false;

	cc = new ObCircle();
	cc->scale = Vector2(20.0f, 20.0f);
	cc->color = Color(0.0f, 0.0f, 0.0f, 1.0f);
	cc->isFilled = false;
}

void Main::Release()
{
	SafeDelete(lim);
	SafeDelete(cam);
	SafeDelete(cc);
}

void Main::Update()
{
	lim->Update();
	cam->Update();
	cc->Update();
}

void Main::LateUpdate()
{
	cam->SetWorldPos(INPUT->GetWorldMousePos());
	cc->SetWorldPos(INPUT->GetWorldMousePos());

	cc->SetWorldPosX(Utility::Saturate(cam->GetWorldPos().x, -150.0f, 150.0f));
	cc->SetWorldPosY(Utility::Saturate(cam->GetWorldPos().y, -150.0f, 150.0f));

	cc->Update();
}

void Main::Render()
{
	lim->Render();
	cam->Render();
	cc->Render();
}

void Main::ResizeScreen()
{
}

int WINAPI wWinMain(HINSTANCE instance, HINSTANCE prevInstance, LPWSTR param, int command)
{
	app.SetAppName(L"Game2");
	app.SetInstance(instance);
	app.InitWidthHeight(1400.0f, 800.0f);
	WIN->Create();
	Main* main = new Main();
	int wParam = (int)WIN->Run(main);
	SafeDelete(main);
	WIN->Destroy();
	WIN->DeleteSingleton();
	
	return wParam;
}

코드입니다.

 

읽어주셔서 감사합니다.

'공부 > 2D과제' 카테고리의 다른 글

쿠키런 1탄 : 달리기, 점프, 2단 점프, 슬라이드  (0) 2023.01.20
슬라이드 퍼즐  (2) 2023.01.18
deque, map  (0) 2023.01.17
잔상 만들기  (0) 2023.01.16
오브젝트 충돌  (0) 2023.01.12