분명 발사체를 Sphere 오브젝트로 했을 때는 정상적으로 작동하였다.
근데...

내가 하루를 통째로 갈아서 만든 새총 물리 구현이 죽었다....
일단 보이는 문제는 이러하다
- 궤적의 높이가 너무 낮게 생성된다.
- 발사체가 던져진 후, 위로 등속도 이동을 한다.
이외에도 고무가 위아래로 움직이는 것과 당길 때 받침대가 뒷 쪽을 본다는 문제점이 있지만, 이는 새총 자체의 문제이므로 나중에 해결하기로 했다.
궤적 높이 문제
의외로 간단하게 해결되었다.
마우스를 조금만 움직여도 캐릭터 위치가 휙휙 바뀌어서 조작감을 위해 마우스 위치 차이의 값에 50.0f 를 나누었었다.
그런데 그러면 궤적도 너무 낮게 나오고, 던지는 힘도 많이 약해져서 그 부분의 변수에 10.0f 정도를 곱했었는데 너무 적었나보다.
30.0f 값을 곱하니까 해결되었다.
Vector3 gap = clickMousePosition - Input.mousePosition;
float currentGap = gap.magnitude / 50.0f;
// ...(중략)....
trajectory.ShowTrajectory(transform.position, dir * (((currentGap * 30.0f) / MaxGapSize) * MaxPower));
if (Input.GetMouseButtonUp(0))
{
// 앵그리 버드를 날린다.
Shot(dir, (currentGap * 30.0f) / MaxGapSize);
}
발사체 발사 문제

잉?
인스펙터 -> 둘의 리지드바디, 콜라이더, 스크립트까지 모두 동일하다.
중력 -> useGravity도 확인해봤지만 날아갈 때 true가 적용되어있다.
힘 -> MaxPower를 8에서 100으로 바꿔보았는데 빠르게 위로 날아갔다.
방향 -> 힘의 방향도 그대로이다.
이 모두가 아니라면,
캐릭터 프리팹 문제라는 소리인데.
프리팹의 요소에는 모두 Mesh filter와 Mesh Renderer 밖에 없다.
물리를 제어할만한 아이가 없다는 말이다.

캐릭터 문제로 확신하기 위해 유니티쨩으로 비교해본 결과, 역시 이 캐릭터들이 문제인 것 같다.
혹시나 스크립트를 Sphere에서 바로 복사 붙여넣기한게 문제인가 싶어 직접 컴포넌트를 추가해보았지만,
역시나 아니었다.
아니 진짜 왜 이럼.
아아ㅏ아아ㅏ강가아강ㄱ아ㅏ악
유니티쨩과 내 캐릭터의 다른 점!!!
Sphere와 내 캐릭터의 다른 점!!!
바로 애니메이터의 유무였다!!!!

애니메이터를 지우니 아주 행복하게 날아가는 내 파랑새...
알고 보니,
애니메이터 컴포넌트의 Apply Root Motion이 활성화 되어 있었다.
Apply Root Motion이 활성화되어 있으면 애니메이션 클립에 위치, 회전 요소 변경이 있다면 실제 객체에 적용이 된다.
아니 근데 저는 애니메이터에 아무 애니에 안 넣었는뎁쇼.
apply root motion이 실제 객체의 위치를 크게 제어하고 있나보다.
해결 방법
애니메이터 컴포넌트의 Apply Root Motion을 비활성화해준다.
'문제 해결' 카테고리의 다른 글
모바일 이동 UI 문제(조이스틱 적용 안됨 + 부캠 대회 결과 후기) (4) | 2024.09.11 |
---|---|
유니티 충돌체끼리 밀리지 않는 현상 (밀림 방지 X, 안 밀림 문제 O) (2) | 2024.08.09 |