Dash 잔상 추가 & Global Object와 Scene Object 분류
- 원작에서 플레이어가 대쉬할 때 잔상이 남는데, 이 부분을 구현해주었다.
- 대쉬 잔상을 사용하기 위해 AfterImage라는 클래스를 만들어서 DashState에서 특정 갯수만큼 가지고 있게 했다.
- 이 기능을 추가하면서 Global Object와 Scene Object를 분류하게 되었는데, 타운 씬 <-> 던전 씬을 이동할 때,
특정 씬에 구애받지 않는 전역적으로 존재하는 그룹이 필요하다는 생각이 들어서 Scene에서 Static 변수로 별도의 그룹을 만들었다. (UI, HUD, AfterImage)
- AfterImage 그룹은 Global 그룹이며, 플레이어가 어떤 씬에 있든 접근 가능하도록 했다.
- AfterImage 4개를 DashState의 Awake에서 Global Object 그룹에 추가하게 되고(화면에 보여지기 위해), 그 포인터를 DashState에서도 들고 있게 해서 제어할 수 있도록 했다.
- Dash State는 n초동안 지속되다가 시간이 지나면 다른 상태로 전이되는데, 현재 시간 / 최대 시간의 비를 이용해서
25% 간격으로 시간이 흐를 때마다 AfterImage를 활성화하는 식으로 잔상을 남기게 했다.
m_fAfterImageTimeOffset(0.25f)
float fProgress = m_tcDuration.GetProgress();
for (int32 i = 0; i < m_iAfterImageMaxCount; ++i)
{
if ((fProgress >= m_fAfterImageTimeOffset + (i * m_fAfterImageTimeOffset)) && !m_vAfterImages[i]->IsEnable())
{
EnableAndInitAfterImage(m_vAfterImages[i]);
}
}
- EnableAndInitAfterImage(m_vAfterImages[i]);에선 해당 AfterImage에 현재 프레임의 플레이어 애니메이션정보를 전달한다.
- AfterImage는 Enable되면 Update에서 상수버퍼에 애니메이션 정보를 전달함으로써 실제 플레이어가 애니메이션을 출력하는 원리와 비슷하게 동작하게 된다.(LT Pos, Size, Offset, 당시 플레이어 방향 등을 전달)
내일 할 일
- Skul / Skill 기초 작업
- LittleBone을 Skul로 따로 분리
(Skul은 플레이어가 소유)
'게임 개발 > [D2D_Portfolio] DirectX2D 포트폴리오 작업일지' 카테고리의 다른 글
19. 스킬 쿨타임 표시 & 대쉬 Smoke 구현 (0) | 2023.04.03 |
---|---|
18. Skill 클래스 구조화 / Skill State 구현 (0) | 2023.04.01 |
16. Dash / JumpAttack State 구현 & Move 버그 수정 (0) | 2023.03.30 |
15. UI 대화창 구현 및 TownScene 배경 수정 (0) | 2023.03.29 |
14. Player Interface HUD 구현 (0) | 2023.03.28 |
댓글