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 를 부착 한 뒤 총구로부터 트랜스폼을 받아와 스폰액터를 하면 발사된다.
'언리얼엔진5 > 각종 지식' 카테고리의 다른 글
[UE5 C++] 언리얼엔진 Timeline C++ 에서 구현하기 (0) | 2024.06.19 |
---|---|
[UE5] Quat(쿼터니언) / Rotator (로테이터) (0) | 2024.06.12 |
[UE5] 타이머 사용하기 (0) | 2024.06.12 |
[UE5] 월드에 액터를 스폰하는 방법 (SpawnActor) (0) | 2024.06.12 |
[UE5] FPS 에임 오프셋 만들기 (캐릭터 상체 상하 움직임) (0) | 2024.06.01 |