티스토리 뷰
사용 버전) 언리얼 5.0.2
먼저 생성한 C++ Class는 Character를 생성하였습니다. 그 후, C++ 코드를 작성하여 캐릭터에 SkeltonMesh를 입히고, SpringArm을 통해서 카메라를 달았습니다. 아래의 사진과 코드를 통해서 차례대로 알아보겠습니다.
SkeltonMesh 입히기
- 콘텐츠 브라우저에 본인이 설치하신 SkeltonMesh를 선택후, Ctrl + C 를 누르시면 경로가 자동으로 복사가 됩니다. 그리고 그냥 코드를 통해서 SkeltonMesh를 입히시면 됩니다. API는 모두 언리얼에서 제공하므로, 함수만 사용하시면 됩니다. 코드는 밑에 총괄 코드를 통해 참고 부탁드리겠습니다.
SpringArm + Camera 세팅
- 1. 먼저 언리얼에서 세팅-> 프로젝트 세팅 -> 입력에 들어가서 아래의 사진과 같이 세팅합니다.
- 2. 그 후, 코드를 작성해야 합니다. 코드의 정확한 내용은 주석을 참고해주시면 감사하겠습니다.
헤더파일
더보기
UCLASS()
class STARTUNREALENGINE4_API AMyCharacter : public ACharacter
{
GENERATED_BODY()
public:
// Sets default values for this character's properties
AMyCharacter();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
UFUNCTION()
void UpDown(float value);
UFUNCTION()
void LeftRight(float value);
UFUNCTION()
void Yaw(float value);
UFUNCTION()
void Pitch(float value);
private:
UPROPERTY(VisibleAnywhere)
class USpringArmComponent* SpringArm;
UPROPERTY(VisibleAnywhere)
class UCameraComponent* Camera;
};
소스코드
더보기
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyCharacter.h"
#include <GameFramework/SpringArmComponent.h>
#include <Camera/CameraComponent.h>
#include <Components/CapsuleComponent.h>
// Sets default values
AMyCharacter::AMyCharacter()
{
// 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;
SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SPRINGARM"));
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("CAMERA"));
//캐릭터에 Arm 세팅
SpringArm->SetupAttachment(GetCapsuleComponent());
//Arm에다가 카메라 세팅
Camera->SetupAttachment(SpringArm);
//길이 세팅
SpringArm->TargetArmLength = 500.f;
//Arm의 방향 세팅
SpringArm->SetRelativeRotation(FRotator(-35.f, 0.f, 0.f));
SpringArm->bUsePawnControlRotation = true;
GetMesh()->SetRelativeLocationAndRotation(
FVector(0.f, 0.f, -88.f), FRotator(0.f, -90.f, 0.f));
//경로에 있는 SkeltonMesh 가져옴.
static ConstructorHelpers::FObjectFinder<USkeletalMesh> SM(TEXT("SkeletalMesh'/Game/ParagonYin/Characters/Heroes/Yin/Meshes/Yin.Yin'"));
//만약 성공시 가져온 SkeltonMesh를 캐릭터에 입힘.
if (SM.Succeeded()) {
UE_LOG(LogTemp, Warning, TEXT("Mesh Success"));
GetMesh()->SetSkeletalMesh(SM.Object);
}
}
// Called when the game starts or when spawned
void AMyCharacter::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AMyCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
// Called to bind functionality to input
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
//TEXT에 있는 값과 프로젝트 세팅에, 입력에 있는 값의 이름이 같아야함.
PlayerInputComponent->BindAxis(TEXT("UpDown"), this, &AMyCharacter::UpDown);
PlayerInputComponent->BindAxis(TEXT("LeftRight"), this, &AMyCharacter::LeftRight);
PlayerInputComponent->BindAxis(TEXT("Yaw"), this, &AMyCharacter::Yaw);
PlayerInputComponent->BindAxis(TEXT("Pitch"), this, &AMyCharacter::Pitch);
}
void AMyCharacter::UpDown(float value)
{
if (value == 0.f)
return;
//캐릭터 앞뒤 움직임
//UE_LOG(LogTemp, Warning, TEXT("UpDown %f"), value);
AddMovementInput(GetActorForwardVector(), value);
}
void AMyCharacter::LeftRight(float value)
{
if (value == 0.f)
return;
//캐릭터 양옆 움직임
//UE_LOG(LogTemp, Warning, TEXT("LeftRight %f"), value);
AddMovementInput(GetActorRightVector(), value);
}
void AMyCharacter::Yaw(float value)
{
//마우스 좌우(X축) 움직이는 코드
AddControllerYawInput(value);
}
void AMyCharacter::Pitch(float value)
{
//마우스 위아래(Z축) 움직이는 코드
AddControllerPitchInput(value);
}
'클라이언트 공부 > 언리얼엔진' 카테고리의 다른 글
(UE5 C++) 프로젝트 빌드 및 컴포넌트 (0) | 2022.09.01 |
---|---|
(UE5 C++) 프로젝트 구성하는 폴더의 역활 (0) | 2022.09.01 |
언리얼엔진 5 C++ 형태로 생성하여 빌드하기 (0) | 2022.07.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 야경
- 알고리즘
- 학교
- 보안
- BFS
- queue
- Dreamhack
- 백준
- STL
- 컨퍼런스
- 인제대학교
- 지뢰찾기
- Select모델
- 스레드풀
- 레지스터
- 드림핵
- 멀티쓰레드
- 시스템보안
- 정보보안
- 워셜알고리즘
- 자료구조
- c++
- 링크드 리스트
- 더블버퍼링
- 고양이
- 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함