DirectX와 C++로 만든 2차원 슈팅 게임
이미지를 클릭하면 재생됩니다.





플레이어는 Idle, Move, Attack로 3가지의 상태를 가집니다. 상태마다 다른 스프라이트를 직접 제작하여 생동감 있는 애니메이션을 구현했습니다.

Idle 상태는 아무것도 하지 않을 때 발생하며 캐릭터가 숨 쉬는 것처럼 애니메이션을 제작했습니다.

Move 상태는 W, A, S, D 키를 눌렸을 때 캐릭터가 해당 방향으로 움직이며 해당 방향 맞는 애니메이션이 실행됩니다. 플레이어를 따라다니는 카메라를 자연스럽게 구현하여 플레이어의 움직임을 잘 따라가도록 했습니다.
Attack 상태는 왼쪽 마우스 클릭했을 때 전환됩니다. 플레이어의 무기에는 장거리와 단거리 두 가지가 존재합니다.

단거리 공격은 플레이어의 정면에서 칼 스프라이트와 피격 스프라이트가 재생됩니다. 피격 스프라이트가 재생되는 범위 안에 있는 몬스터들이 플레이어 공격력만큼 데미지를 받도록 설정했습니다.

장거리 공격은 플레이어가 화면 기준으로 마우스 방향에 따라 총이 조준되도록 구현했습니다. 마우스 왼쪽을 클릭할 경우 총알이 생성되어 앞으로 나아갑니다. 총알이 몬스터에 맞았을 경우 해당 몬스터의 체력이 감소하고 총알이 사라지도록 제작했습니다. 또한, 장거리 공격은 단거리 공격과 달리 스킬이 존재하고 C 버튼을 눌렸을 경우 총알이 여러 방향으로 나가는 스킬을 구현했습니다.
![]() |
![]() |
마나를 소비하고 나서 시간이 지나면 마나가 천천히 회복합니다. 단, 단거리 무기로 바꿨을 경우 마나를 회복하지 않도록 했습니다. Attack상태는 Move 상태일 때도 실행할 수 있습니다.
다음은 몬스터에 대해 설명하겠습니다.
몬스터는 단거리와 장거리 공격 유닛을 제작했습니다. 몬스터는 플레이어와 마찬가지로 체력바와 마나 바가 있습니다.

장거리 몬스터는 플레이어뿐만이 아니라 지형도 충돌하도록 구현했습니다. 단거리 몬스터는 길막방지를 위해 오브젝트까리 충돌하지 않도록 설정했습니다.
몬스터 상태는 Move, Attack, Death 상태가 존재합니다.

![]() |
![]() |
장거리 몬스터는 플레이어가 일정한 거리 이내로 들어올 경우 Attack 상태가 되어 플레이어 방향을 탄알을 발사하도록 설정했습니다. 단거리 몬스터는 플레이어와 닿을 경우 공격 애니메이션을 실행하면서 인스턴스 없는 공격하도록 설정했습니다.

몬스터들은 체력이 0 이하가 되면 죽는 애니메이션을 실행하며 사라집니다.

몬스터를 처치했을 때 왼쪽 위의 UI의 점수가 1점 상승하는 것을 확인할 수 있습니다.

지형 오른쪽 아래에 내려가면 다른 맵으로 이동할 수 있습니다.
다음 지형으로 넘어가는 장면은 영상을 참고하시기 바랍니다.