
오늘 학습 키워드
최종 팀 프로젝트
오늘 학습 한 내용을 나만의 언어로 정리하기
플레이어 공격 만들기
public class NormalAttackState : IPlayerState
{
private float startStateTime;
private float startAttackTime = 0.01f;
private float comboTime = 0.5f; // 콤보타임 지나서 누르면 의미없음.
private bool isComboInput = false;
public void Enter(PlayerController player)
{
startStateTime = Time.time;
isComboInput = false;
// AttackCount = 0 + NormalAttack Trigger On.
player.PlayerAnimator.ClearBool();
player.PlayerAnimator.SetTriggerAnimation(PlayerAnimID.NormalAttack);
player.Inputs.Player.Move.Disable();
}
public void HandleInput(PlayerController player)
{
// 키 입력이 필요
if (Time.time - startStateTime <= comboTime)
{
if (player.Inputs.Player.NormalAttack.triggered)
{
isComboInput = true;
}
}
}
public void LogicUpdate(PlayerController player)
{
// Normalization Time = 1이면 => 애니메이션이 끝난 상태
// 애니메이션이 끝날 때까지 입력이 없으면 Idle로 넘어감
// 입력이 있으면 (0.5초 이내로) 다시 NormalAttackState로 변경
// 현재 진행 중인 애니메이션이 NormalAttack_(현재번호) 일 때
if (Time.time - startStateTime > startAttackTime)
{
AnimatorStateInfo curAnimInfo = player.PlayerAnimator.animator.GetCurrentAnimatorStateInfo(0);
if (curAnimInfo.IsName($"NormalAttack_{player.PlayerAttack.AttackCount+1}"))
{
float animTime = curAnimInfo.normalizedTime;
if (animTime >= 1.0f)
{
if (player.PlayerAttack.AttackCount >= player.PlayerAttack.MaxAttackCount)
{
player.PlayerAnimator.ClearInt();
player.ChangeState<IdleState>();
return;
}
// 애니메이션 끝났음.
if (isComboInput)
{
player.PlayerAttack.AttackCount++;
player.PlayerAnimator.SetIntAniamtion(PlayerAnimID.NormalAttackCount, player.PlayerAttack.AttackCount);
player.ChangeState<NormalAttackState>();
return;
}
player.ChangeState<IdleState>();
return;
}
}
}
}
public void Exit(PlayerController player)
{
isComboInput = false;
}
}
콜라이더도 애니메이션으로 넣을 수 있다!!!!!!

- 그래서 공격 히트박스를 애니메이션으로 넣음!!!! 진짜 대박
학습하며 겪었던 문제점 & 에러
문제 1
- 문제&에러에 대한 정의
공격 액션이 끝난 후 상태는 Idle이 되었으나 공격 애니메이션 마지막 프레임에서 멈춰있었음
- 내가 한 시도
입력을 막았으나 그래도 그랬음
- 해결 방법
Has Exit Time을 꺼줬더니 되었다
- 새롭게 알게 된 점 / 이 문제&에러를 다시 만나게 되었다면?
Transition Time이 0초여도 Has Exit Time을 꺼주자
문제 2
- 문제&에러에 대한 정의
애니메이션에 콜라이더 조정했더니 좌우반전이 안됨
- 내가 한 시도
머리를 싸맴
- 해결 방법
scale x를 -1로 하면 뒤집힌다!!!!!