250429

lililllilillll·2025년 4월 29일

개발 일지

목록 보기
156/350

✅ What I did today


  • Unreal Engine Learning
  • Prototyping


💡 Prototyping


P003

시네머신 카메라 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);

위에 이런 코드 있어서 부딪힌 놈들만 신경씀



profile
너 정말 **핵심**을 찔렀어

0개의 댓글