10주차
캐릭터 이동 및 공격
- 3D Modeling (Sketchfab)
- Adobe Mixamo를 이용하여 Rigging 진행
- FSM 패턴 적용
- Super Class에
Enter, Exit, LogicUpdate, PhysicsUpdate 등 추상 함수 선언
- Idle / Move / Sprint State
- 키 입력에 따라 State 변경
- 현재 카메라 방향에 따라 이동 방향 구분
- 움직일 때
RayCast를 이용하여 바닥 경사면 확인
- 경사면에서 뜨거나 미끄러지는 현상을 막기 위해 경사면 반대 방향 힘 추가
- Jump / Fall State
- 바닥 유무 및 y방향 속도에 따라 State 변경
- 자연스러운 물리를 위해 공중에서 다른 이동 메커니즘 및 Physics Material 적용
- Roll State
- 키 입력으로 State 변경
- 애니메이션 이벤트를 이용해 구르기가 끝나는 시점 전달
- Attack State
- 키 입력으로 State 변경
- 3타 콤보 모션으로 구성
- 각 모션 별로 애니메이션 이벤트를 통해 다음 공격 입력을 받을 시점 전달
- 애니메이션이 끝나기 전에 다음 공격을 입력 받으면 다음 공격 모션 실행
11주차
캐릭터 피격 및 죽음 처리
- HitState 추가
IsFrozen 변수를 이용해서 피격 시 이동 불가 판정
IsInvincible 변수를 이용해서 피격 무적 시간 할당
- 애니메이션 이벤트를 이용해 다시 원래 상태로 복귀
- DieState 추가
- OnTriggerEnter에서 CompareTag를 통해 피격 판정
- 플레이어를 공격할 수 있는 모든 적 및 장애물 트리거는
AttackDamage 컴포넌트를 보유함
AttackDamage 컴포넌트에서 damage 값을 받아서 HP 처리
- HP가 남아있으면 현재 상태
HitState로 변경
- HP가 남아있지 않으면 현재 상태
DieState로 변경
플레이어 무기 시스템
- 현재 들고 있는 무기의
attackSpeed에 따라 애니메이션 속도 조절
- 현재 들고 있는 무기의
attackDamage에 따라 대미지 조절
- PlayerWeaponManager (class)
- 모든 무기를 List로 가지고 있고, 현재 들고 있는 무기 index 저장
EnableTrigger(), DisableTrigger() 함수로 현재 무기의 트리거 on/off
ChangeWeapon()으로 무기의 타입을 바꿀 수 있음
- PlayerWeapon (class)
attackSpeed, attackDamage 저장