프로젝트 세팅 -> 콜리전
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 |