Game Develop

라인트레이스, 파티클 재생 본문

UnrealEngine5/이것저것

라인트레이스, 파티클 재생

MaxLevel 2022. 10. 8. 19:28

UPROPERTY(EditAnywhere, Category = BulletEffect)
class UParticleSystem* mBulletEffectFacctory;  // 파티클을 담을 수 있는 객체. BP창에서 파티클오브젝트 셋팅.(BP창이든 C++로 해놨든.


아래 코드는 라인트레이스에 충돌한 물체에 파티클을 렌더하는 코드.
TPS프로젝트에서 스나이퍼총일 때 실행시키는 코드다.


FVector startPos = mTPSCamComp->GetComponentLocation(); // 라인트레이스 시작위치 (카메라위치값)
FVector endPos = mTPSCamComp->GetComponentLocation() + mTPSCamComp->GetForwardVector() * 5000; 

// 최대 카메라 전방(ForwardVector) 직선 5000cm까지 충돌체크.


FHitResult hitInfo; // 라인트레이스의 충돌정보를 담을 변수.
FCollisionQueryParams params; // 충돌 옵션 설정 변수
params.AddIgnoredActor(this); // 자기 자신은 충돌에서 제외.

bool bHit = GetWorld()->LineTraceSingleByChannel(hitInfo, startPos, endPos, ECC_Visibility, params); // 충돌 시 true 리턴.

if (bHit) // 충돌이 발생하면
{
      FTransform bulletTrans; // 파티클을 렌더시킬 위치에 관한 트랜스폼.
      bulletTrans.SetLocation(hitInfo.ImpactPoint); // 라인트레이스의 충돌위치로 셋팅.
      UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), mBulletEffectFacctory, bulletTrans); // 파티클렌더.
}