<언리얼 C++> RandRange와 VRandCone의 차이
2026. 5. 7. 11:24ㆍUnreal
소총의 산탄범위를 늘리는 코드를 작성하는 중, RandRange와 비슷한 VRandCone을 사용하게 되어 이 차이를 정리해보려고 한다.
RandRange와 VRandCone의 차이점?
FMath::RandRange(Min, Max)
→ 단일 숫자 반환 (float 또는 int)
FMath::VRandCone(중심방향, 각도)
→ 3D 벡터(FVector) 반환
두 함수는 랜덤값을 반환한다는 점은 같지만, 반환 타입이 다르다.
그래서 라인트레이스를 사용할 때 RandRange를 사용해도 동작은 하지만 코드가 상당히 길어진다.
두 코드 비교
먼저 RandRange를 사용했을 때의 코드이다.
// RandRange로 산탄 방향 만들기
FVector BaseDirection = GetActorForwardVector();
// 1. 랜덤 각도 2개 생성 (Yaw, Pitch)
float RandomYaw = FMath::RandRange(-SpreadAngle, SpreadAngle);
float RandomPitch = FMath::RandRange(-SpreadAngle, SpreadAngle);
// 2. 그 각도만큼 회전한 방향 계산
FRotator BaseRotation = BaseDirection.Rotation();
BaseRotation.Yaw += RandomYaw;
BaseRotation.Pitch += RandomPitch;
FVector RandomDir = BaseRotation.Vector();
다음과 같이 각도값을 각각 작성해서 그 각도만큼 회전 방향도 계산해야한다.
이 코드를 VRandCone을 사용하면
FVector RandomDir = FMath::VRandCone(BaseDirection, FMath::DegreesToRadians(SpreadAngle));
이 한 줄로 끝낼 수 있다.
결과값
이 두 함수는 반환값 외에도 결과값이 조금 다르다.
먼저 RandRange이다.
□□□□□
□□□□□ ← 정사각형 영역 안에서 균등 분포
□□□□□
이와 다르게 VRandCone은 다음과 같다.
◯◯◯
◯◯◯◯◯ ← 원뿔(원) 영역 안에서 분포
◯◯◯
총기의 산탄 로직을 작성할땐 저런 사각형 형태보다 원 형태가 더 자연스럽기 때문에 RandRange보다 VRandCone이 더 적합하다고 생각했다.
이 외에도 여러가지 Rand함수가 있다.
Rand함수 정리
| RandRange | 단일 숫자 | 데미지 분산, 일반 랜덤 |
| VRandCone | 3D 방향 벡터 | 발사 방향, 산탄 |
| VRand | 단위 구 안 랜덤 벡터 | 완전 랜덤 방향 |
| RandPointInBox | 박스 내 랜덤 위치 | 스폰 위치 |
'Unreal' 카테고리의 다른 글
| <언리얼> IK Rig 세팅 (1) | 2026.05.30 |
|---|---|
| <언리얼> 애니메이션 리타겟팅(UE5) (0) | 2026.05.17 |
| < UE5 > 레벨 진행 시스템 - GameStateClass (1) | 2026.04.28 |
| < 언리얼 C++ > 6자유도 비행체 + 중력 / 낙하 + 에어 컨트롤 구현 (0) | 2026.04.22 |
| < 언리얼 C++ > Pawn 클래스 3D캐릭터 만들기 ( 필수 기능 ) (0) | 2026.04.20 |