샷건은 랜덤하게 분출하는 총알이여서 랜덤값으로 내보내야하는데
이 계산의 조건은
- 발사시 끝지점이 이미 구해져있어야 합니다.
- 스타트 지점을 가지고있어야합니다.
- 샷건의 범위(구) 를 미리 가지고있어야합니다.
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()를 나누는 이유는 매우 큰값을 방지하기위한용입니다.
'공부 > Unreal5' 카테고리의 다른 글
Unreal PostProcess 사용할때 함수들 (0) | 2022.07.05 |
---|---|
Unreal Component nullptr 문제 (0) | 2022.07.05 |
Unreal Mesh(Bone)를 Physics로 흔들리게 해주는 방법 (0) | 2022.07.04 |
Unreal 발사체 사용시 충돌체 무시방법들 (0) | 2022.07.04 |
Unreal MatchState 상태 추가하는방법 (Custom MatchState) (0) | 2022.07.03 |