if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameMode!")); } }
보다시피 여기서 삽질을 매우 많이했다… AFPSGameMode::StartPlay()를 AFPSGameModeBase::StartPlay()로 고치는 것을 유념한다…
캐릭터 임포트
캐릭터 작동 확인
FPSCharacter.cpp
1 2 3 4 5 6 7 8 9 10
voidAFPSCharacter::BeginPlay() { Super::BeginPlay(); if(GEngine) { // 5 초간 디버그 메시지를 표시합니다. (첫 인수인) -1 "Key" 값은 이 메시지를 업데이트 또는 새로고칠 필요가 없음을 나타냅니다. GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter.")); } }
// Fill out your copyright notice in the Description page of Project Settings.
#include"FPSCharacter.h"
// Sets default values AFPSCharacter::AFPSCharacter() { // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned voidAFPSCharacter::BeginPlay() { Super::BeginPlay(); if(GEngine) { // 5 초간 디버그 메시지를 표시합니다. (첫 인수인) -1 "Key" 값은 이 메시지를 업데이트 또는 새로고칠 필요가 없음을 나타냅니다. GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter.")); } }
// Called every frame voidAFPSCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime);
}
// Called to bind functionality to input voidAFPSCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent);
// Fill out your copyright notice in the Description page of Project Settings.
#include"FPSCharacter.h"
// Sets default values AFPSCharacter::AFPSCharacter() { // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned voidAFPSCharacter::BeginPlay() { Super::BeginPlay(); if(GEngine) { // 5 초간 디버그 메시지를 표시합니다. (첫 인수인) -1 "Key" 값은 이 메시지를 업데이트 또는 새로고칠 필요가 없음을 나타냅니다. GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter.")); } }
// Called every frame voidAFPSCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime);
}
// Called to bind functionality to input voidAFPSCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent);
// 구체를 단순 콜리전 표현으로 사용 CollisionComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent")); // 구체의 콜리전 반경을 설정 CollisionComponent->InitSphereRadius(15.0f); // 루트 컴포넌트를 콜리전 컴포넌트로 설정 RootComponent = CollisionComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gameplay // BlueprintReadWrite를 통하여 블루프린트 내에서 총구 오프셋의 값을 구하고 설정할 수 있다 FVector Muzzleoffset; // 카메라 스페이스 오프셋 벡터를 사용해 스폰 위치 결정
UPROPERTY(EditDefaultsOnly, Category = Projectile) // EditDefaultsOnly는 클래스를 블루프린트의 디폴트로만 설정할 수 있다는 뜻 TSubclassOf<class AFPSProjectile> ProjectileClass;