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