개인과제 진행상황
나만의 게임 만들기 프로젝트
장르 : 2D 로그라이크
해상도 : 1920 * 1080
뷰 : TopDown
오늘의 작업 :
도전해보고 싶은 것s :
잠들어있던 2D 감각을 깨우기 위해 강의 복습 시작 !
오늘 애니메이션 관련 코드를 복습하면서
이해하기 어려웠던 부분이 있었다.
private void AnimState(Vector2 direction)
{
anim.SetBool("Move", direction.magnitude > 0f);
}
SetBool() 의 두 번째 매개변수로 true 또는 false 와 같이 bool 값이 들어가는 경우만 봤었는데, 이렇게 Vector2 가 들어간 경우를 만나게 되니 당황..
구글링을 해도 시원한 답변을 얻지 못해 오랜만에 튜터님 찬스를 사용했다.
우선, magnitude 가 0 이면 Input 이 없는 것이고
0 이 아니면 Input 이 발생했다는 의미.
튜터님이 정리해주신 내용은 다음과 같다.
private void AnimState(Vector2 direction)
{
if (direction.magnitude > 0f)
{
anim.SetBool("Move", true);
}
else
{
anim.SetBool("Move", false);
}
}
아래 코드는 위 코드의 요약 ? 버전이라 생각하면 되는데,
보통은 아래 코드처럼 주로 작성이 이루어진다고 하셨다.
private void AnimState(Vector2 direction)
{
anim.SetBool("Move", direction.magnitude > 0f);
}
의미는
"Input 이 들어왔을 때(= magnitude 가 0 보다 클 때) Move 를 한다."
private void Move(Vector2 obj)
{
animator.SetBool(IsWalking, obj.magnitude > .5f);
}
왜 0f 가 아닌 0.5f 사용하신건지 궁금해서 이 부분도 튜터님께 여쭤봤다.
받은 답변은 :
magnitude 가 0 이 나올 땐 확실히(거의) 0 이고
1이 나오는 경우에는 0.9999~ 도 나오는 경우가 있어서
안전하게(?) 0 과 1 의 사이 절반 값인 0.5f 를 적으신 게 아닐까 추측.
깔끔한 답변 왕감사압도적감사입니다 !!!!!!👍