시네머신 카메라 control을 자식으로서의 움직임만 반영하게 하여 동숲식 카메라 해결
var avoidanceDirection = _obstacles.Aggregate(Vector3.zero, (current, obstacle) => current + (transform.position - obstacle.transform.position).normalized);
왜 이렇게 하면 장애물을 잘 피하나?
단일 장애물
단 하나의 장애물만 있으면, 장애물 위치로부터 멀어지는 방향의 단위벡터 하나를 그대로 따라가므로 곧장 회피합니다.
다중 장애물
여러 장애물이 있을 때는 각 장애물에 대해 “멀어지는 방향”을 모두 더합니다.
정규화(단위벡터) 사용 이유
모든 장애물에 동일한 영향력을 주어, 가까운 장애물만 우선하는 식으로 가중치를 달리 주려면 (transform.position - obstacle.position).normalized / distance 같은 추가 연산이 필요하지만, 현재 로직은 모든 장애물에 동일한 비중을 주어 간단히 구현한 것입니다.
_obstacles = Physics.OverlapSphere(transform.position, avoidanceDistance, obstacleLayer);
위에 이런 코드 있어서 부딪힌 놈들만 신경씀