NavMeshAgent - Base Offset
AI가 의자에 앉았을 때, 지면에 Agent가 붙어 있으면 의자를 많이 낮춰야 한다.

걸어다닐 때는 AI가 지면에 붙어있어야 하지만 의자에 앉을 때만 AI를 살짝 올리고 싶다.
처음에 고안한 방법은

이렇게 animator 컴포넌트가 있는 오브젝트(puppet_kid)의 자식으로 빈 오브젝트(GameObject)를 생성해 AI 프리팹의 몸통부분을 자식으로 넣어준 후 빈 오브젝트(GameObject)의 transform.position.y 값만 조정해주면 되겠다고 생각했다.
[SerializeField] private GameObject _bodyObject;
private Vector3 _sitOffset = new Vector3(0, 0.3f, 0);
...
_bodyObject.transform.localPosition = _sitOffset;
이렇게 해도 의자에 앉았을 때 원하는대로 캐릭터가 올라가긴 한다.
하지만 다 구현하고 나니 Nav Mesh Agent의 Base Offset 이 눈에 띄었다.
Base Offset - NavMeshAgnet가 이동 중에 고려해야 하는 고도(높이)의 기본값
Base Offset을 사용하면 위에서 했던 일들이 한 줄로 해결된다.
_agent.baseOffset = 0.3f;

'내일배움캠프(Unity)' 카테고리의 다른 글
TIL (0) | 2024.02.01 |
---|---|
TIL - AI (1) | 2024.01.26 |
TIL - 오류 수정 (0) | 2024.01.24 |
TIL - 조리된 음식 프리팹 만들기, 몇 가지 오류 (1) | 2024.01.23 |
TIL - 음식 먹기, 접시 치우기 (2) | 2024.01.23 |