프로젝트 세팅 -> 콜리전

Object Channels

콜리전을 가지는 물체들 사이의 충돌을 신경써야할 때 사용

ㄴ 기본 반응 (Ignore, block, overlap)

block : 충돌한다.

overlap : 뚫고 지나가지만 이벤트를 발생시킬 수 있음

Ignore  : 무시

 

캐릭터의 Capsule 컴포넌트에 콜리전 프리셋(충돌 규칙) 적용

블루 프린터 디테일 창에서 콜리전 프리셋을 설정해도 되고

Weapon->SetCollisionProfileName(TEXT("NoCollision")); 처럼 생성자에서 설정해줄 수도 있다.

 

Trace Channels

주위에 무엇이 있는지 논리적인 판단을 확인하거나 탐색하기 위해 사용

bool UWorld::SweepSingleByChannel 함수

ㄴ 트레이스 채널을 활용하여 첫 번째로 부딪힌 물체에 대한 충돌 정보를 얻을 수 있는 함수

 

Socket

메시 스켈레톤의 관절에 소켓을 추가하면 캐릭터의 손에 무기를 쥐어줄 수도 있다.

ㄴ Actor를 캐릭터 메시의 소켓에 attatch하는 방식으로

 

GameInstance

매니저 역할을 할 클래스는 GameInstance

프로젝트 세팅 -> 맵 & 모드 -> 게임 인스턴스 클래스 설정

 

전투 상황에서 체력 계산은 공격을 당해서 체력이 깎이는 쪽에서 처리를 해주는 편이 낫다.

 

액터 컴포넌트 (stat component)

ㄴ 캐릭터의 스탯 컴포넌트 (최대 체력, 레벨, 공격력 정보)

ㄴ OnAttacked 함수, SetStat 함수를 여기에 구현

 

싱글톤처럼 어디서든 GameInstance를 받아올 수 있는 방법

auto MyGameInstance = Cast<UMyGameInstance>(UGameplayStatics::GetGameInstance(GetWorld()));

 

UI

UI 프리팹마다 1대1로 대응되는 스크립트를 만들어 관리하는 것이 좋다. (Widget 클래스 상속)

 

HP UI를 3D로 캐릭터에 붙이는 코드 (MyCharacter.cpp)

HpBar = CreateDefaultSubobject<UWidgetComponent>(TEXT("HPBAR")); 
HpBar->SetupAttachment(GetMesh());
HpBar->SetRelativeLocation(FVector(0.f, 0.f, 200.f));
HpBar->SetWidgetSpace(EWidgetSpace::Screen); // World는 3D 세상의 UI, Screen은 화면에 항상 보이는 2D UI



static ConstructorHelpers::FClassFinder<UUserWidget> UW(TEXT("WidgetBlueprint'/Game/UI/WBP_HpBar.WBP_HpBar_C'"));
if (UW.Succeeded())
{
HpBar->SetWidgetClass(UW.Class); 
HpBar->SetDrawSize(FVector2D(200.f, 50.f));
}

 

UI를 만드는 여러가지 방식

1. UHUD 클래스를 상속받는 방법

ㄴ 언리얼 4 이전 버전에서 사용하던 방법

2. UserWiget 클래스를 상속받는 방법 (UMG)

ㄴ 비주얼 툴을 이용하여 UI를 만든다.

'언리얼 5 > 정리' 카테고리의 다른 글

라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15
AI Controller & Behavior Tree  (0) 2022.09.14
애니메이션  (0) 2022.09.13
Unreal의 기초  (0) 2022.09.12

+ Recent posts