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

16. Dash / JumpAttack State 구현 & Move 버그 수정

헛둘이 2023. 3. 30. 19:31

Dash / JumpAttack State 구현
- DashState는 Enter에서 초기 속도를 부여해주도록 해서, 순간적으로 많은 거리를 이동하도록 했다.
- 원작에서 DashState로의 전이는 모든 상태에서 가능하기 때문에 그 내용도 추가해주었다.
- Dash 시 생기는 잔상 추가해줘야 함
- JumpAttack State는 비교적 단순하게 구현했는데, 점프 상태에서 공격 키를 누르면 상태가 전이되고, 애니메이션이 끝나거나, 바닥에 닿으면 다른 상태로 전이되도록 했다.
 
Move 버그 수정
- AttackState를 추가하고 나서 생긴 버그인데, 방향키를 누른 상태에서 AttackState로 전이되면, 그 순간 이동 속도가 2배 가까이 빨라지는 버그였다.
- 삽질을 한 끝에 알아낸 원인은 월드행렬의 Right, Up을 해당 방향을 가리키는 노멀 벡터라고 착각해서 생긴 문제였다.
1. 애니메이션에서 각 프레임마다 자연스러운 동작을 위해 오브젝트의 크기(Scale)를 해당 프레임의 크기로 변경해주는 로직이 있다.
2. 이렇게 크기가 바뀌는 와중에 플레이어의 움직임을 세팅하는 로직에서는 이 Right, Up 벡터를 이용해서 캐릭터의 속도를 나타내는 벡터를 세팅하고 있다.
 ex) right * speed * delta_time;
- 행렬의 Scale 값이 증가하면 Right/Up 벡터의 크기도 바뀌다보니 플레이어의 크기가 변동될 때마다 속도가 바뀌었던 것
- right, up 벡터가 아닌 노멀 벡터를 곱해줌으로써 버그 해결
 
 
내일 할 일
- Dash 잔상 추가
- Town Scene 추가 작업