• [Unreal 게시판] OnOverlap()의 최초 충돌지점이 zero vector로 나오는 이유2015.09.30 PM 02:03

게시물 주소 FONT글자 작게하기 글자 키우기

Question>

UE4로 작업 중인데요.
overlap 발생시, 아래와 같은 delegate function으로 처리하도록 설정했습니다.

void ATestCharacter::OnOverlap(
class AActor* OtherActor, class UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult
)
{
(중략)
}

충돌이 발생하니까, 위 함수가 호출되기는 합니다.
하지만, 'SweepResult.ImpactPoint'가 (0.0f, 0.0f, 0.0f)으로 나옵니다.

이거 오류인가요? 아니면, 제가 설정을 잘못한 건가요?
최초 충돌지점을 정확히 알려면, 어떻게 해야 하나요?

-------------------------------------------------------------

Answer>

비슷한 예가 아래 link에 있네요.^^;;;;;;;;


https://answers.unrealengine.com/questions/260245/fhitresult-impactpoint.html


link 내용에도 있지만, 일단 저 현상은 오류가 아니라고 판단됩니다.


엄밀하게 말해서 'OnOverlap()'은
'겹침'이 발생할 때, 호출되는 함수이지
'충돌'이 발생할 때, 호출되는 함수는 아니거든요.^^;;;;;;;
따라서, engine쪽에서 'SweepResult.ImpactPoint'를 정확히 계산해 줘야할 의무는 없습니다.


최초 충돌지점을 정확히 알려면,
짧은 시간 간격으로 UWorld::LineTraceSingle()(또는 LineTraceMulti())를 이용해서
ray를 쏴서 충돌지점을 파악하는 수 밖에는 없다고 생각되고요.
솔직히 말하면, 그렇게 구한 값도
'충돌 오차'를 감안한 '근사값'이라는 점을 염두하시고, ^^;;;;;;;
개발을 진행하셨으면 합니다.


왜냐하면,
unreal engine은 단지 'game engine'일 뿐이지, 정밀한 '충돌 simulator'가 아니라서요.
한계를 인정하고, 개발을 진행할 필요가 있습니다.







Tag:
안기훈, Keehoon Ahn, 언리얼, Unreal, UDK, iPhone, iPad, app, 앱, iOS
댓글 : 0 개
친구글 비밀글 댓글 쓰기