Choose your operating system:
Windows
macOS
Linux
현재 발사체는:
-
수명이 무한입니다 (씬 아웃라이너에서 전혀 사라지지 않습니다).
-
월드의 다른 오브젝트와 충돌하지 않습니다.
이번 단계에서는 발사체의 충돌과 수명을 구성해 주겠습니다.
발사체의 수명 기간 제한
-
Solution Explorer 에서
FPSProjectile
클래스 CPP 파일을 찾아FPSProjectile.cpp
를 엽니다. -
FPSProjectile
생성자에 다음 코드를 추가하여 발사체의 수명을 설정합니다:// 3 초 후 죽습니다. InitialLifeSpan = 3.0f;
발사체의 충돌 세팅 편집
언리얼 엔진에는 여러가지 프리셋 콜리전 채널이 포함되어 있으나, 엔진에서는 게임 프로젝트에 사용할 수 있는 커스터마이징 가능 채널을 여럿 제공하기도 합니다.
-
프로젝트 세팅 을 열고 콜리전 을 선택하면 콜리전 채널 커스터마이징이 가능합니다.
-
새 오브젝트 채널... 을 선택하여 콜리전 채널을 새로 만듭니다. 새로운 콜리전 채널 이름을 "Projectile" 이라 하고 Default Response (기본 반응) 이 Block (막음)이라 되어있는지 확인하고 수락 을 누릅니다.
-
프리셋 아래 추가... 를 선택하고 새 프로파일 이름도 "Projectile" 이라 해줍니다. 다음 그림을 참고하여 콜리전 프리셋을 설정하세요.
이 콜리전 프로파일은 발사체가
스태틱 액터
,폰
,다이내믹 액터
,피직스
시뮬레이션액터
,비히클
,디스트럭터블 액터
에 막힘을 나타냅니다. 또한 이 콜리전 프로파일은 프로젝타일 오버랩의Pawn
을 지정하기도 합니다.
새 콜리전 채널 세팅 사용
-
Solution Explorer 에서
FPSProjectile
클래스 CPP 파일을 찾은 다음FPSProjectile.cpp
를 엽니다. -
FPSProjectile
생성자에서,CollisionComponent
뒤에 다음 줄을 추가합니다:CollisionComponent->BodyInstance.SetCollisionProfileName(TEXT("Projectile"));
-
FPSProjectile.cpp
는 이제 다음과 같을 것입니다:// 프로젝트 세팅의 설명 페이지에 저작권 문구를 채우세요. #include "FPSProject.h" #include "FPSProjectile.h" // Sets default values AFPSProjectile::AFPSProjectile() { // 이 액터가 매 프레임 Tick() 을 호출하도록 설정합니다. 필요치 않은 경우 끄면 퍼포먼스가 향상됩니다. PrimaryActorTick.bCanEverTick = true; // 구체를 단순 콜리전 표현으로 사용합니다. CollisionComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent")); CollisionComponent->BodyInstance.SetCollisionProfileName(TEXT("Projectile")); // 구체의 콜리전 반경을 설정합니다. CollisionComponent->InitSphereRadius(15.0f); // 루트 컴포넌트를 콜리전 컴포넌트가 되도록 설정합니다. RootComponent = CollisionComponent; // 이 컴포넌트를 사용하여 이 프로젝타일의 무브먼트를 구동시킵니다. ProjectileMovementComponent = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("ProjectileMovementComponent")); ProjectileMovementComponent->SetUpdatedComponent(CollisionComponent); ProjectileMovementComponent->InitialSpeed = 3000.0f; ProjectileMovementComponent->MaxSpeed = 3000.0f; ProjectileMovementComponent->bRotationFollowsVelocity = true; ProjectileMovementComponent->bShouldBounce = true; ProjectileMovementComponent->Bounciness = 0.3f; // 3 초 후 죽습니다. InitialLifeSpan = 3.0f; } // 게임 시작시 또는 스폰시 호출됩니다. void AFPSProjectile::BeginPlay() { Super::BeginPlay(); } // 매 프레임 호출됩니다. void AFPSProjectile::Tick( float DeltaTime ) { Super::Tick( DeltaTime ); } // 프로젝타일의 속도를 발사 방향으로 초기화시키는 함수입니다. void AFPSProjectile::InitVelocity(const FVector& ShootDirection) { ProjectileMovementComponent->Velocity = ShootDirection * ProjectileMovementComponent->InitialSpeed; }
-
Visual Studio 에서
FPSProjectile.cpp
를 저장합니다. -
Solution Explorer 에서 FPSProject 를 찾습니다.
-
FPSProject 에 우클릭하고 Build 를 선택하여 프로젝트를 컴파일합니다.