TIL_231227

Z_제트·2023년 12월 27일
0

TODAY I LEARNED

목록 보기
42/88
post-thumbnail

to do_오늘 할 일

  • 알고리즘 문제풀기
  • 개인과제 ing

retro_오늘 한 일(회고)

개인과제 진행상황

나만의 게임 만들기 프로젝트

장르 : 2D 로그라이크
해상도 : 1920 * 1080
뷰 : TopDown


오늘의 작업 :

  • ✅ 유니티 프로젝트 생성 및 에셋 추가
  • ✅ 타일맵 만들기
  • ✅ 플레이어 만들기
  • ✅ 플레이어 Move 구현
  • ✅ “ Look 구현
  • “ Attack 구현
  • 플레이어 움직임에 맞춰 카메라 이동(Cinemachine 활용해보자)
  • ✅ 플레이어 애니메이션 적용(Idle, Move, Attack)
  • 적 구현
  • IntroScene

도전해보고 싶은 것s :

  • ✅ 플레이어 움직임은 InputSystem 으로 구현해보자
    • delegate 와 친해지기 위해
  • 아이템 관련은 SO 로 시도해보자
  • 저장 기능 구현 (e.g. 플레이타임, 점수)
  • 애니메이션
  • 사운드
  • 적의 랜덤 스폰 ?
  • 텔레포트
  • NPC 추가 및 상호작용(대화)
  • 플레이어 선택


잠들어있던 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 를 적으신 게 아닐까 추측.

깔끔한 답변 왕감사압도적감사입니다 !!!!!!👍

profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글