ManiMind게임에서 StunVFX의 위치가 몬스터유닛의 크기에 따라서 잘못 출력되는 오류를 해결하려했다.
초기에는 먼저 VFXData에 VFXBodyType이라는 Enum을 추가해서, Enum에 따라서 VFX가 출력되는 위치를 바꿔주려했다.
해당방법은 꽤나 유효했으나 게임오브젝트의 Scale값에 따라서 출력되는 VFX의 위치가 크게 바뀌는 문제가 있었다.
부모로 달아주는 게임오브젝트의 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가 출력되는 위치가 마치 부모오브젝트의 한참 위에 출력되는 것처럼 보이는 것이다.