안녕하세요. 말씀하신 것처럼 Physics Material 2D를 Player의 Collider에 적용하는 방법도 가능합니다. 다만 Player에 Friction이 0인 Material을 적용하면 플레이어가 접촉하는 모든 지형에 동일한 마찰 특성이 적용됩니다. 즉, 벽뿐만 아니라 일반 바닥이나 이후에 추가되는 다른 종류의 지형에서도 플레이어의 마찰을 동일하게 처리하게 됩니다. 지형마다 서로 다른 특성을 줄 수 있도록 Player가 아닌 Tilemap의 Collider에 Material을 적용했습니다. 특히 여러 타일이 하나의 Tilemap과 Composite Collider 2D로 구성되어 있다면 타일이 추가될 때마다 Physics Material을 다시 설정할 필요는 없습니다. 해당 Composite Collider 2D에 한 번 설정해 두면 그 Collider에 포함된 타일 전체에 적용됩니다. 반대로 게임의 모든 지형에서 플레이어의 마찰을 항상 0으로 사용할 계획이라면 Player Collider에 Physics Material을 적용하는 것도 충분히 가능한 방법입니다. 그리고 강의에서는 초급자를 대상으로 하기 때문에 Rigidbody2D와 Physics Material 2D를 이용해 비교적 간단하게 벽에 달라붙는 현상을 처리했으며, 조금 더 세밀하게 캐릭터를 제어해야 하는 경우에는 Physics2D.Raycast 등을 이용해 플레이어의 주변을 검사하여 "현재 벽에 닿아 있는지", "바닥에 닿아 있는지", "어떤 종류의 지형과 접촉하고 있는지" 등을 판별한 뒤, 충돌한 오브젝트의 Layer나 별도의 컴포넌트 등을 기준으로 이동 로직을 다르게 처리하는 방법도 많이 사용합니다. 예를 들어 일반 벽에서는 자연스럽게 떨어지고, 특정 벽에서는 Wall Slide나 Wall Jump가 가능하도록 만드는 식으로 보다 세밀한 제어가 가능합니다.
안녕하세요. 고박사입니다. 제 강의를 수강해주셔서 감사합니다. 현재는 스크립트 작성할 때는 자막과 타이핑소리만 나는 것이 맞습니다. 유튜브 촬영이나 다른 강의에서도 타이핑 소리와 코드 설명을 위한 자막만 달아두었는데 소리가 나면 더 좋겠다는 의견이 있어 소리를 추가할 예정입니다. 보이스 오버 작업이 완료되는대로 다시 영상을 업로드하고, 공지사항에 게시하도록 하겠습니다. 감사합니다.
현재 사용하고 있는 유니티의 버전이 2022 이상의 버전이어서 New AI Navigation을 사용하고 있다면 장소 정보 검사 코드를 기존의 linkData.offMeshLink.area == offMeshArea 에서 if ( (navMeshAgent.navMeshOwner as NavMeshLink).area.Equals(offMeshArea) ) 와 같이 수정해야 합니다.
이 강의는 유니티 5(2017~2022) 기준으로 제작되어 Built-in RP를 사용했습니다. 현재 유니티 6는 기본 RP가 Universal이기 때문에 Shader의 문제로 색상이 깨지는 것입니다. 현재 스크린샷 기준으로 Material 폴더에 가면 바닥 표현을 위한 Material이 있을텐데 그 파일을 선택하고, Inspector View에서 Shader를 Universal Render Pipeline - Lit 으로 설정하면 검은 바닥이 보일겁니다.
OnTrigger, OnCollision 메소드는 Rigidbody2D를 가지고 있는 게임오브젝트 에서 작동합니다. 즉, Platform_00_Moving 오브젝트에 Rigidbody2D가 있을 때는 Platform_00_Moving 오브젝트에 있는 다른 컴포넌트에서 private void OnCollisionEnter2D() { .. } 가 호출되고, Platform 오브젝트에 Rigidbody2D가 있을 때는 Platform 오브젝트에 있는 컴포넌트에서 OnCollisionEnter2D()가 호출됩니다. 지금처럼 자식오브젝트들이 Rigidbody2D를 가지고 있지 않고, Collider2D만 가지고 있으면 자식들이 가지고 있는 Collider2D에 충돌이 발생하면 부모(Platform_00_Moving)에 있는 Rigidbody2D가 작동합니다. 단, 위에 작성한 것과 같이 Rigidbody2D가 작동할 때 OnTrigger, OnCollision 메소드를 호출하려면 Rigidbody2D와 동일한 오브젝트에 스크립트를 컴포넌트로 넣어줘야합니다. 오브젝트를 나눠서 관리하는 기준은 렌더링, 충돌 등과 같이 사용되는 곳에 따라 기준을 정해서 나눕니다. 그 기준이 정해져있진 않고, 회사, 프로젝트에 따라 다르게 설정될 수 있습니다.