| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- https://mynameiskgws.tistory.com/
- https://ji-han.tistory.com/
- 이리5조
- https://hjmag1120.tistory.com/
- https://vetenir.tistory.com/
- 스파르타코딩클럽
- https://eo-oe.tistory.com/
- 태어난김에 보스까지
- Today
- Total
info8995 님의 블로그
발사체 구현하기 본문
3.1 - 게임에 발사체 추가하기
3.2 - 슈팅 구현하기
3.3 - 발사체 콜리전 및 수명 구성하기
3.4 - 발사체가 월드와 상호작용하도록 만들기
3.5 - 뷰포트에 조준선 추가하기
발사 액션 매핑 추가하기

발사체 클래스 추가하기



1.C++ 클래스가 생성될 경우 Visual Studio 가 FPSProjectile.h 헤더 파일 및 FPSProjectile.cpp 구현 파일이 열린 상태로 자동으로 나타납니다.
2.FPSProjectile.h 클래스 헤더 파일로 이동합니다.
3.다음과 같이 SphereComponent 헤더 파일을 추가합니다.
FPSProjectile.h

4.FPSProjectile 인터페이스의 USphereComponent 에 레퍼런스를 추가할 경우, FPSProjectile.h 의 public 액세스 지정자 아래에 다음 코드를 추가합니다.
FPSProjectile.h

5.FPSProjectile.cpp 의 AFPSProjectile 생성자( PrimaryActorTick.bcanEverTick 이후)에 다음을 추가합니다.
FPSProjectile.cpp

발사체 이동 컴포넌트 추가하기
1.FPSProjectile.h 클래스 헤더 파일로 이동합니다.
2.ProjectileMovementComponent 헤더 파일을 추가합니다.
FPSProjectile.h
#include "GameFramework/ProjectileMovementComponent.h"
3.다음 코드를 FPSProjectile.h 의 public 액세스 지정자 아래에 추가합니다.
FPSProjectile.h
// 발사체 이동 컴포넌트입니다.
UPROPERTY(VisibleAnywhere, Category = Movement)
UProjectileMovementComponent* ProjectileMovementComponent;\
4.다음 코드 줄을 FPSProjectile.cpp 의 AFPSProjectile 생성자에 추가합니다.
FPSProjectile.cpp

발사체의 초기 속도 설정하기
FPSProjectile.h 클래스 헤더 파일로 이동합니다.
다음 함수 선언을 FPSProjectile.h 의 public 액세스 지정자 아래에 추가합니다.
FPSProjectile.h
// 발사 방향으로의 발사체 속도를 초기화하는 함수입니다.
void FireInDirection(const FVector& ShootDirection);
다음 함수 정의를 FPSProjectile.cpp 에 추가합니다.
FPSProjectile.cpp
// 발사 방향으로의 발사체 속도를 초기화하는 함수입니다.
void AFPSProjectile::FireInDirection(const FVector& ShootDirection)
{
ProjectileMovementComponent->Velocity = ShootDirection * ProjectileMovementComponent->InitialSpeed;
}
발사 입력 액션 바인딩하기
Visual Studio 의 Solution Explorer 로 이동하여 FPSCharacter.h 클래스 헤더 파일을 엽니다.
다음 함수 선언을 FPSCharacter.h 의 public 액세스 지정자 아래에 추가합니다.
FPSCharacter.h
// 발사체 발사를 처리하는 함수입니다.
UFUNCTION()
void Fire();
Fire 함수를 바인딩하려면 FPSCharacter.cpp: 의 SetupPlayerInputComponent 함수에 다음 코드를 추가합니다.
FPSCharacter.cpp
PlayerInputComponent->BindAction("Fire", IE_Pressed, this, &AFPSCharacter::Fire);
PlayerInputComponent->BindAction("Fire", IE_Pressed, this, &AFPSCharacter::Fire);
다음 함수 정의를 FPSCharacter.cpp 에 추가합니다.
FPSCharacter.cpp
void AFPSCharacter::Fire()
{
}
발사체 스폰 위치 정의하기
FPSProjectile 액터를 스폰하는 경우, OnFire 함수를 구현할 때 고려할 점이 2개 있습니다.
발사체 스폰 위치
발사체 클래스(이를 통해 FPSCharacter 및 그 파생 블루프린트가 어떤 발사체를 스폰할지 알 수 있음)
카메라 스페이스 오프셋 벡터를 사용하여 발사체의 스폰 위치를 결정합니다. 이 파라미터를 편집 가능하게 만들어 BP_FPSCharacter 블루프린트에서 설정하고 미세조정할 수 있도록 합니다. 결과적으로 이 데이터를 기반으로 발사체의 초기 위치를 계산할 수 있습니다.
FPSCharacter.h 클래스 헤더 파일로 이동합니다.
다음 코드를 FPSCharacter.h 의 public 액세스 지정자 아래에 추가합니다.
FPSCharacter.h
// 카메라 위치로부터의 총구 오프셋입니다.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gameplay)
FVector MuzzleOffset;
// 카메라 위치로부터의 총구 오프셋입니다. UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gameplay) FVector MuzzleOffset;
EditAnywhere 를 사용하면 블루프린트 에디터의 디폴트 모드 내에서나 캐릭터의 아무 인스턴스의 디테일 탭 내에서 총구 오프셋 값을 변경할 수 있습니다. BlueprintReadWrite 지정자를 사용하면 블루프린트 내에서 총구 오프셋의 값을 구하고 설정할 수 있습니다.
다음 코드를 FPSCharacter.h 의 protected 액세스 지정자 아래에 추가합니다.
FPSCharacter.h
protected:
// 스폰할 발사체 클래스입니다.
UPROPERTY(EditDefaultsOnly, Category = Projectile)
TSubclassOf<class AFPSProjectile> ProjectileClass;
protected: // 스폰할 발사체 클래스입니다. UPROPERTY(EditDefaultsOnly, Category = Projectile) TSubclassOf<class AFPSProjectile> ProjectileClass;
EditDefaultsOnly 는 발사체 클래스를 블루프린트의 각 인스턴스가 아닌 블루프린트에서만 디폴트로 설정할 수 있다는 의미입니다.
FPSCharacter.h 는 다음과 같아야 합니다.
FPSCharacter.h

FPSCharacter.cpp 는 다음과 같아야 합니다.
FPSCharacter.cpp


FPSProjectile.h는 다음과 같아야 합니다.
FPSProjectile.h

FPSProjectile.cpp는 다음과 같아야 합니다.
FPSProjectile.cpp

'TIL(Today I Learned) > Unreal Engine' 카테고리의 다른 글
| TIL: 컨트롤러에서 R 키 바인딩하여 재장전 구현하기 (0) | 2025.02.28 |
|---|---|
| TIL: 언리얼 엔진 블루프린트로 Crouch() 구현 (0) | 2025.02.20 |
| TIL언리얼 엔진에서 Overlap 이벤트를 활용한 아이템 획득 시스템 구현 (0) | 2025.02.12 |
| TIL: 언리얼 엔진 C++로 엘리베이터 객체 구현 (0) | 2025.02.06 |
| TIL: 언리얼 액터의 이동 및 회전 구현 (0) | 2025.02.04 |