게임 개발 공부/Unreal Engine 28

SetActorLocation()과 AddActorLocalOffset() 비교

액터의 왕복 이동을 Tick()에서 SetActorLocation()과 AddActorLocalOffset()로각각 구현해보고 비교해보겠습니다.SetActorLocation()AItem::AItem(){ LocationMoveSpeed = 100.0f;}void AItem::Tick(float DeltaTime){ Super::Tick(DeltaTime); // 현재 위치 가져오기 FVector CurrentLocation = GetActorLocation(); // 위치가 범위를 벗어나면 방향 변경 if (CurrentLocation.Y >= 1000.0f || CurrentLocation.Y  AddActorLocalOffset()AItem::AItem(){ LocationMoveSpeed = 100..

리플렉션 등록과 변수 리플렉션

리플렉션C++ 클래스의 변수와 함수 정보를 에디터나 블루프린트에서 활용할 수 있게 만들어 주는 기능.리플렉션 기능으로 코드를 직접 다루지 않아 다른 팀원들이 직관적으로 조정 가능.에디터와 블루프린트에서 변경이 가능해서 테스트를 빠르게 할 수 있습니다.개발 효율과 협업 효과를 극대화 할 수 있습니다. 사용 예시 코드Item.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Item.generated.h"UCLASS()class SPARTAPROJECT_API AItem : public AActor{ GENERATED_BODY() public: AItem(); protected: // Root Scene Compo..

C++ 언리얼의 빌드 오류 해결

오류 해결언리얼 C++을 공부해보니 블루프린트를 사용할 때에 비해서 빌드 오류와 관련해서 많은 문제를 마주했습니다.이에 관한 몇 가지 해결 방법을 기록해놓으려고 이렇게 글을 작성합니다. 1. 읽기 전용 해제 읽기 전용 체크 해제를 하고 다시 속성 확인을 해도읽기 전용 체크가 되어있지만 한번만 하면 적용이 된 것이라고 합니다.  2. 언리얼을 끄고 빌드해결 방법을 배우기 전에 빌드 오류가 많이 생기는 이유를 알기 위해서코드가 언리얼까지 전달되는 과정부터 알아야 합니다. 코드 -> 빌드 (컴파일 + 링크) -> dll파일 -> 언리얼의 과정을 거치는데자주 생기는 문제가 코드를 작성 혹은 수정 후 언리얼을 켜놓은 채로 빌드를 하면 문제가 발생합니다. 그 이유가 언리얼을 실행 시켜놓은 상태에서는 빌드 후의 dl..

셰이프 모델링 작업한 영역 막힐 때 해결

언리얼 작업을 하다 보면 메시에 구멍을 내거나 자르거나 하는 작업을 할 때가 있습니다.그럴 때 쉽게 사용하는 방법이 모델링 모드의 셰이프 모델링 입니다.제가 해당 글에서 알려드릴 것은 특정한 경우에는 셰이프 모델링으로 오브젝트에서 제거한 부분의충돌영역이 남아있어 캐릭터나 물체가 통과하지 못 하는 문제가 생길 때 해결하는 방법입니다.   우선 충돌영역이 잘 제거되는 일반적인 상황을 보여드리겠습니다. 생성에서 Box와 Cylinder를 생성하고 두 개의 오브젝트를 겹쳐줍니다. 컨트롤을 누른 상태에서 두 오브젝트를 모두 선택하고셰이프 모델링에서 Boolean을 눌러 큐브에 구멍이 났는지 확인하고 수락을 눌러줍니다.결과적으로 구멍에 캐릭터가 들어갈 수 있습니다. 이제 충돌영역이 남아있어 캐릭터가 들어가지 못 하..

Blueprint로 간단한 텍스트 게임 만들기

오늘은 언리얼엔진의 블루프린트에 익숙해지기 위해 간단한 텍스트 게임을 만들어보았습니다. 간단히 클릭으로만 진행하는 게임을 생각하며 플레이어와 적, 총(무기)을 주요하게 생각하며 제작을 진행했습니다.   적 등장게임을 시작하자마자 적이 나타났다는 글이 출력됩니다.적의 체력도 변수(Target)로 만들어주었습니다.   장전플레이어가 사용하는 총을 다 사용하면 장전(R키)도 할 수 있게 만들었습니다.물론 탄창이 꽉 차있으면 장전할 수 없도록 설정해두었습니다.   힐힐(E키) 부분인데 장전을 만들면서 영감을 얻어 쉽게 만들었습니다.장전할 때와 마찬가지로 체력이 꽉 차있으면 힐이 되지 않도록 설정해보았습니다.하지만 해당 블루프린트는 약간의 문제가 있습니다. 힐의 문제점저는 플레이어가 입는 데미지와 힐량을 똑같이 ..

머티리얼(Materials)과 머티리얼 인스턴스

해당 글에서는 머티리얼의 개념을 정리하고머티리얼을 생성, 머티리얼과 머티리얼 인스턴스의 차이를 확인해보겠습니다. 머티리얼언리얼엔진의 머티리얼(Materials)은 씬에서 오브젝트의 표면 프로퍼티를 정의.쉽게 말하자면 물건의 색, 반사의 정도, 굴곡, 투명도, 질감을 표현해 주는 것이 머티리얼 입니다.  그림 이제 머티리얼을 생성해보겠습니다. 생성한 머티리얼에 들어가면 머티리얼 그래프창과 함께 머티리얼 결과를 출력하는 노드가 있습니다. 결과 노드에 있는 각 입력에 자신이 원하는 노드와 연결해서 머티리얼을 생성합니다.  연결할 노드를 생성하기위해 머티리얼 그래프에서 우클릭.그렇게 보이는 창에서 궁금한 것만 간단하게 정리해보았습니다. Constant(상수)실수 값 하나를 출력. 값이 에디터에서 한 번 설정되거..

Unreal Engine 마켓 플레이스 -> Fab

기존에 에픽 게임즈 스토어에서 다른 사람들이 만든 에셋을 편리하게 구매하여 다운로드 할 수 있던 마켓 플레이스는2024년 10월에 Fab으로 이전되었습니다. 그래서 기존의 마켓 플레이스 이용자는 업데이트도 해야 합니다.   그리고 조금 더 편리하게 사용하기 위해 플러그인을 설치해줍시다.  위의 과정을 진행한 후에 언리얼 엔진을 실행시켜 창을 눌러주고 목록을 살펴보면 Fab이 있습니다. 이제 몇 가지 다운로드를 해보겠습니다. 좌측 상단의 막대 3개를 눌러 제가 원하는 카테고리를 선택해줍니다. 무료 에셋을 다운로드하고 싶다면 우측의 필터에서 가격을 눌러 무료를 선택하면 됩니다. 콘텐츠 브라우저에 Fab이라는 폴더가 생기고 다운로드한 3D 모델이 생깁니다.     오늘은 마켓 플레이스에서 변경된 Fab을 사용..

Unreal Engine 기능 소개

해당 글에서는 제가 한 달간 독학으로 다뤄본 Unreal Engine의 기능들을 소개하겠습니다.  언리얼 에디터게임을 제작의 핵심 요소는 리소스의 사용과 상호작용 그리고 관리라고 생각합니다. 언리얼 엔진으로 게임을 제작하며 캐릭터와 사물의 배치를 적절히 설정하고, 자신이 만든 기능이 잘 작동하는지를 확인하는 과정이 많았습니다. 그리고 사물, 캐릭터 모델링, 애니메이션, 사운드 그리고 기능을 구현하는 코드까지 많은 파일들이 생성되었습니다. 위의 일들을 언리얼 엔진 에디터로 한번에 확인하고 관리 할 수 있었습니다.   애니메이션 에디터언리얼 엔진을 다뤄보기 전에는 캐릭터 애니메이션을 다루려면 어느 정도 공부를 마친 애니메이터가 블렌더나 마야에서 애니메이션 관련 작업 완성시키고 게임 엔진으로 해당 파일을 가져..