언리얼엔진5/각종 지식
[UE5] ProjectileMovementComponent
Rocketbabydolls
2024. 6. 12. 19:08
ProjectileMovementComponent
언리얼 엔진에서 탄환, 로켓, 화살 등과 같은 발사체의 운동을 처리하기 위한 컴포넌트입니다. 이 컴포넌트를 사용하면 발사체가 물리 법칙에 따라 자연스럽게 움직이고 상호작용하도록 만들 수 있습니다.
사용 예시
// Fill out your copyright notice in the Description page of Project Settings.
#include "Weapon/VITracerRound.h"
#include "Components/SphereComponent.h"
#include "GameFrameWork/ProjectileMovementComponent.h"
// Sets default values
AVITracerRound::AVITracerRound()
{
Sphere = CreateDefaultSubobject<USphereComponent>(TEXT("Sphere"));
Sphere->SetupAttachment(RootComponent);
StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
StaticMesh->SetupAttachment(Sphere);
StaticMesh->SetRelativeScale3D(FVector(8.75f, 0.5f, 0.5f));
ProjectileMovement = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("ProjectileMovement"));
ProjectileMovement->SetUpdatedComponent(RootComponent);
ProjectileMovement->InitialSpeed = 7000.0f;
ProjectileMovement->Bounciness = 0;
ProjectileMovement->Friction = 0;
ProjectileMovement->InterpLocationTime = 0.05f;
ProjectileMovement->ProjectileGravityScale = 0.0f;
ProjectileMovement->InitialSpeed = 12000.f;
StaticMesh->OnComponentHit.AddDynamic(this, &AVITracerRound::OnHitStaticMesh);
Sphere->OnComponentHit.AddDynamic(this, &AVITracerRound::OnHitSphere);
}
void AVITracerRound::OnHitStaticMesh( UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit)
{
Destroy();
}
void AVITracerRound::OnHitSphere(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit)
{
Destroy();
}
FTransform TF;
TF.SetLocation(Muzzle->getComponentLocation);
UCameraComponent* FPPCamera = Cast<AVICharacter>(World->GetFirstPlayerController()->GetCharacter())->GetCamera();
TF.SetRotation(FPPCamera->GetComponentRotation().Quaternion());
TF.SetScale3D(FVector(0.05f, 0.05f, 0.05f));
World->SpawnActor<AActor>(TracerRoundRef, TF);
sphere 및 staticmesh, projectileMovementCompoent 를 부착 한 뒤 총구로부터 트랜스폼을 받아와 스폰액터를 하면 발사된다.