[2025/08/08]TIL

오수호·2025년 8월 8일

TIL

목록 보기
59/60

트러블 슈팅

ManiMind게임에서 StunVFX의 위치가 몬스터유닛의 크기에 따라서 잘못 출력되는 오류를 해결하려했다.

잘못된 문제해결방법

  1. 초기에는 먼저 VFXData에 VFXBodyType이라는 Enum을 추가해서, Enum에 따라서 VFX가 출력되는 위치를 바꿔주려했다.

    해당방법은 꽤나 유효했으나 게임오브젝트의 Scale값에 따라서 출력되는 VFX의 위치가 크게 바뀌는 문제가 있었다.

  2. 부모로 달아주는 게임오브젝트의 scale값이 큰 상태이므로, scale값에 의해서 colider의 bounds연산에 영향을 끼친다고 생각하여 아래의 방법을 사용하였다.

    2-1. bounds.extents의 값을 글로벌좌표에서 로컬좌표로 계산 후, 부모오브젝트의 증가한 scale값만큼 보정.

    2-2. bounds.max.y의 값을 그대로 적용

    2-3. bounds.center의 값과 bounds.extents의 값을 scale이 증가한 값 만큼 함께 보정

    2-4. bounds.max.y의 값을 부모오브젝트의 증가한 scale값 만큼 함께 보정

문제해결방법

문제는 사실 colider가 scale값에 따라 증가해서 잘못된 bounds연산을 하는 것이 문제가 아니였다. 부모오브젝트의 scale값이 커지면, SetParent로 달아준 스킬이펙트의 localScale이 자동으로 변해서 자식오브젝트가 되는데, 여기서 VFXData에 있는 localScale값으로 해당 값을 덮어씌우기 때문에 결과적으로 부모오브젝트의 scale이 3으로 균등하게 커져있는 상태라면 VFX도 함께 3배가 커지는 상황이 발생한다. 문제는 StunVFX는 자체적으로 y축으로 약간 올라가있는 형태이기때문에 이 값이 3배가 되면 StunVFX가 출력되는 위치가 마치 부모오브젝트의 한참 위에 출력되는 것처럼 보이는 것이다.

profile
게임개발자 취준생입니다

0개의 댓글