본문 바로가기

공부/Unreal5

Unreal 샷건 계산식

샷건은 랜덤하게 분출하는 총알이여서 랜덤값으로 내보내야하는데

 

이 계산의 조건은

- 발사시 끝지점이 이미 구해져있어야 합니다.

- 스타트 지점을 가지고있어야합니다.

- 샷건의 범위(구) 를 미리 가지고있어야합니다.

FVector Start  발사하는 위치

FVector HitTarget 타겟의 위치

FVector DistanceToSphere 어디까지 날릴것인지에 대한 거리 (사거리용도입니다)

FVector SphereRadius 구의 크기

1) 먼저 타겟방향으로 노멀라이즈를 해줍니다.

FVector ToTargetNormalize=(HitTarget-Start).GetSafeNormal();

 

2)  구의 센터위치를 구해줍니다

FVector SphereCenter=TraceStart+ToTargetNormalize*DistanceToSphere;

 

3) 랜덤한 방향을 구해줍니다.

FVector RandVec = UKismetMathLibrary::RandomUnitVector()  * FMath::FRandRange(0.f, SphereRadius);

 

4.) 끝지점을 구해줍니다.

//랜덤한 위치

FVector End=SphereCenter + RandVec;

//방향

FVector ToEnd= End-TraceStart;

 

5) 마무리

FVecetor(TraceStart+ToEnd*(8000.f*ToEnd.Size());

ToEnd.Size()를 나누는 이유는 매우 큰값을 방지하기위한용입니다.