지난번에는 화면에 맞추어 벽에 반사하여 투사체가 이동하는 프로그램을 만들었다.
이번에는 투사체가 아래방향의 중력에 의하여 포물선을 그리며 떨어짐과 동시에
바닥(아래쪽)에서 반대방향으로 힘을 받아 튀어 오르는 프로그램을 만들었다.
중력이 계속 작용하는듯이 보이도록하기위하여 아래에 한번씩 튕길 때 마다 힘이 약해지는 느낌이다.
마지막에는 아래쪽에서 투사체가 바닥으로 내리 꽂히는듯한 느낌으로 남아있었기떄문에
튕기는 횟수에 제한을 두고 10번 아래쪽으로 튕겼을시 투사체가 사라지도록 하였다.
쏠 수 있는 투사체는 총 10발. 10번 튕긴후 사라진 투사체는 다시 쏠 수 있다.
추가된 코드 부분
void Bullet::LateUpdate()
{
//위
if (arrow.GetWorldPos().y >= app.GetHalfHeight() + CAM->position.y)
{
fireDir.y *= -1;
gravity *= -1.0f;
//gravity *= 2.0f;
//scalar *= 2.0f;
arrow.SetWorldPosY(app.GetHalfHeight() + CAM->position.y);
}
//아래
if (arrow.GetWorldPos().y <= -app.GetHalfHeight() + CAM->position.y)
{
fireDir.y *= -1;
gravity *= -1.0f;
gravity *= 0.7f;
scalar *= 0.7f;
arrow.SetWorldPosY(-app.GetHalfHeight() + CAM->position.y);
bouncecount++;
}
//왼쪽
if (arrow.GetWorldPos().x <= -app.GetHalfWidth() + CAM->position.x)
{
fireDir.x *= -1;
scalar *= 0.7f;
arrow.SetWorldPosX(-app.GetHalfWidth() + CAM->position.x);
}
//위
if (arrow.GetWorldPos().x >= app.GetHalfWidth() + CAM->position.x)
{
fireDir.x *= -1;
scalar *= 0.7f;
arrow.SetWorldPosX(app.GetHalfWidth() + CAM->position.x);
}
if (bouncecount == 10)
{
arrow.isVisible = false;
//dummy.isVisible = false;
bouncecount = 0;
}
}
'공부' 카테고리의 다른 글
[C++ / Dx11] 색상표 만들기 (0) | 2023.01.05 |
---|---|
DX 11 - 렌더링 파이프 라인 (0) | 2023.01.03 |
C++ / Dx11 반사 / 좌표 충돌 (0) | 2023.01.02 |
C++ / Dx11 투사체 포물선 벡터와 마우스 좌표 (0) | 2022.12.29 |
C++ 벡터 (단위/길이/정규화/합연산/곱연산/내적/외적) (0) | 2022.12.15 |
댓글