응애맘마조
반사 미사일 본문
창 크기의 끝으로 가면 반대로 튕겨나오는 미사일을 만들었습니다.
이전과 달라진 부분은 중력을 없애고 반사하는 것만 추가했습니다.
달라진 부분은 LateUpdate() 안의 if문입니다.
나아가는 방향의 역행렬을 곱하면 되는 문제였습니다.
//bullet.cpp
#include "stdafx.h"
Bullet::Bullet()
{
missile.SetLocalPos(Vector2(2000.0f, 2000.0f));
missile.scale.x = 30.0f;
missile.rotation = 0.0f;
missile.isVisible = false;
missilePet.SetParentRT(missile);
missilePet.SetLocalPos(Vector2(50.0f, 50.0f));
missilePet.scale = Vector2(10.0f, 10.0f);
missilePet.rotation = 0.0f;
missilePet.isAxis = true;
missilePet.isVisible = false;
}
void Bullet::Update(ObRect player)
{
if (!missilePet.isVisible) return;
cout << scalar << endl;
Vector2 dir = fireDir * scalar + DOWN;
missile.MoveWorldPos(dir * DELTA);
missile.rotation = Utility::DirToRadian(dir);
missilePet.revolution += 360.0f * ToRadian * DELTA;
missile.Update();
missilePet.Update();
Vector2 velocity = missile.GetWorldPos() - player.GetWorldPos();
float dis = velocity.Length();
if (dis > 2000.0f)
{
missile.isVisible = false;
missilePet.isVisible = false;
}
if (missile.GetWorldPos().x < -app.GetHalfWidth() + CAM->position.x)
fireDir.x *= -1.0f;
if (missile.GetWorldPos().x > app.GetHalfWidth() + CAM->position.x)
fireDir.x *= -1.0f;
if (missile.GetWorldPos().y < -app.GetHalfHeight() + CAM->position.y)
fireDir.y *= -1.0f;
if (missile.GetWorldPos().y > app.GetHalfHeight() + CAM->position.y)
fireDir.y *= -1.0f;
}
void Bullet::Render()
{
if (!missilePet.isVisible) return;
missile.Render();
missilePet.Render();
}
bool Bullet::Shoot(Vector2 fireDir, float scalar, Vector2 firePos)
{
if (!missilePet.isVisible)
{
missile.isVisible = true;
missilePet.isVisible = true;
missilePet.revolution = 0.0f;
missile.rotation = Utility::DirToRadian(fireDir);
missile.SetWorldPos(firePos);
this->fireDir = fireDir;
this->scalar = scalar * 6.0f;
return true;
}
return false;
}
코드입니다.
읽어주셔서 감사합니다.
Comments