본문 바로가기
게임 개발/[D2D_Portfolio] DirectX2D 포트폴리오 작업일지

17. Dash 잔상 추가 & Skul / Skill 기초 작업

by 헛둘이 2023. 3. 31.

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은 플레이어가 소유)

댓글