응애맘마조
오브젝트 충돌 본문
사각형의 플레이어 오브젝트를 움직였을 때 다른 오브젝트에 충돌했을 경우 움직이게 하는 것이 과제였습니다.
//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);
cc->color = Color(0.0f, 0.0f, 1.0f, 0.5f);
cc->scale = Vector2(100.0f, 100.0f);
}
void Main::Release()
{
SafeDelete(pl);
SafeDelete(cc);
SafeDelete(rc);
}
void Main::Update()
{
pl->Update();
cc->Update();
rc->Update();
}
void Main::LateUpdate()
{
//사각형과 마우스 충돌
if (pl->Intersect(INPUT->GetMouseWorldPos()))
{
if (INPUT->KeyPress(VK_LBUTTON))
{
Vector2 velocity = INPUT->GetMouseWorldPos() - lastPos;
pl->MoveWorldPos(velocity);
}
}
pl->Update();
if (pl->Intersect(rc))
{
Vector2 dir = INPUT->GetMouseWorldPos() - lastPos;
rc->MoveWorldPos(dir);
}
if (pl->Intersect(cc))
{
Vector2 dir = INPUT->GetMouseWorldPos() - lastPos;
cc->MoveWorldPos(dir);
}
lastPos = INPUT->GetMouseWorldPos();
}
void Main::Render()
{
pl->Render();
cc->Render();
rc->Render();
}
void Main::ResizeScreen()
{
}
int WINAPI wWinMain(HINSTANCE instance, HINSTANCE prevInstance, LPWSTR param, int command)
{
app.SetAppName(L"Game1");
app.SetInstance(instance);
app.InitWidthHeight(1400.0f,800.0f);
Main* main = new Main();
int wParam = (int)WIN->Run(main);
WIN->DeleteSingleton();
SafeDelete(main);
return wParam;
}
코드입니다.
읽어주셔서 감사합니다.
'공부 > 2D과제' 카테고리의 다른 글
deque, map (0) | 2023.01.17 |
---|---|
잔상 만들기 (0) | 2023.01.16 |
충돌에 따른 색깔 변화 (0) | 2023.01.11 |
카메라 이동 2 (0) | 2023.01.11 |
카메라 이동 (0) | 2023.01.09 |
Comments