본문 바로가기

게임 개발/[D2D_Portfolio] DirectX2D 포트폴리오 작업일지67

51. 몬스터 피격 이벤트 처리 & 침식된 기사 Dead 이벤트 처리 몬스터 피격 이벤트 처리 - 몬스터가 피격당했을 때 일어나는 일은 아래와 같다. 1. 피격 애니메이션 실행 2. 플레이어의 데미지만큼 몬스터 체력 감소 3. 몬스터가 죽었는지 확인하고 죽었다면 몬스터의 상태 변경 - 위 조건을 염두에 두고 비헤이비어 트리 작업을 진행했고, 피격 시 Hit 상태로의 전이를 통해 피격 애니메이션을 실행시켰다. - 그리고 피격 후 IsAlive 함수를 통해 HP가 남았는지 확인하고 남아있지 않다면 Dead 상태로 전이되며, 씬에서 제거된다. - 원작에서는 피격 시 일정 시간동안 경직되며 Hit Animation을 n초간 유지하는데, 이는 TimerCondition이라는 비헤이비어 노드를 만들어서 해결했다. - TimerCondition은 n초가 지나기 전에는 FAILURE를 .. 2023. 5. 19.
50. 몬스터 추가 및 비헤이비어 트리 개선 몬스터 추가 및 비헤이비어 트리 개선 - 내가 만드는 스테이지에 등장해야 할 몬스터들이 많이 있지만 가장 기본적인 몬스터 중 하나인 침식된 기사 라는 몬스터가 있다. - 이 몬스터는 이전에 만들었던 신병과 비슷하게 생겼지만 이동하는 모션이나 공격하는 모션이 다르고, HP를 모두 소모하면 그냥 죽는 게 아니라 자신이 있던 자리에 폭발을 일으키며 죽는다. - 기존에 상태 패턴을 이용하면 비슷하게 구현이 가능하겠지만, 패트롤할 때 랜덤하게 이동하거나 특정 상황에 추가적인 행동을 하는 등 디테일한 부분을 추가하려면 비헤이비어 트리를 사용해야 한다고 생각했고, 일단은 좌/우 랜덤하게 움직이는 것과, 공격할 때 앞으로 s의 속도로 l의 길이만큼 슬라이딩하는 부분들을 추가했다. - 폭발을 일으키는 부분 등 여러 부분.. 2023. 5. 18.
49. AbyssOrb Skill 구현 & Particle 상호작용 추가 AbyssOrb Skill 구현 - 게임 내의 스컬 중 하나인 대마도사 스컬의 스킬으로, 커다란 구체를 바라보는 방향으로 발사하는 스킬이다. - 구체는 부딪히는 적들에 대해 특정 간격으로 데미지를 입히고, 자신의 지속시간이 끝나면 폭발하여 데미지를 준다. - 이번 구현에 더 신경쓴 부분은 애니메이션과 더불어 특정 간격으로 데미지를 줄 때 물리 엔진에 의해 파티클들이 들썩거리도록 해서 원작의 느낌을 살리는 부분이다. - 특히나 마지막에 폭발할 때 큰 힘이 주어지고 파티클들이 강한 힘으로 솟구치게 되는데 원작을 플레이할 때 인상깊게 본 부분이라 꼭 구현하고 싶었다. (이전에 구현했던 Meteor도 마찬가지) Particle 상호작용 추가 - 위에서 언급했던 스킬과 스킬에 의해 파티클에 힘을 부여하는 종류의 .. 2023. 5. 16.
48. 데미지 Font 처리 & Particle 움직이는 로직 변경 데미지 Font 처리 - 데미지의 경우 기존에 구현해놨던(FW1FontWrapper 라이브러리를 이용한) Font 엔진을 토대로 처리했다. - 월드 좌표에 있는 물체의 위치를 스크린 좌표로 옮겨서 출력해줘야 했기 떄문에 월드 좌표에서 스크린 좌표로의 좌표 변환이 필요했고 아래와 같이 처리했다. Vec3 Scenes::WorldToScreenPosition(const Vec3& vPoint, shared_ptr pCamera) { int32 iWidth = g_pEngine->GetWidth(); int32 iHeight = g_pEngine->GetHeight(); Matrix matView = pCamera->GetViewMatrix(); Matrix matProjection = pCamera->Get.. 2023. 5. 15.