본문 바로가기

언리얼엔진

(49)         글쓰기    
UE5 빌드 환경 설정 및 컴파일 방법 참고 https://docs.unrealengine.com/5.0/ko/build-configuration-for-unreal-engine/언리얼 5, BuildConfiguration.xml 설정 Build Configuration Configure how the engine is built. docs.unrealengine.com 라이브 코딩 컴파일 - Ctrl + Alt + F11 or Cmd : LiveCoding.Compile 입력 라이브 코딩 해제 후 빌드 - Visual Studio, Ctrl + F5 빌드 환경 설정 언리얼 5에서 c++ 코드를 한 줄만 수정해도 빌드 시간이 매우 오래 걸린다. 아래는 아무 설정도 안하고 액터(MyActor.cpp/h)를 수정하였을 때 걸린 시간과 로그이다...
언리얼 C++ StaticMesh 추가하기 앞의 예제에서 StaticMeshComponent까지 추가했지만 StaticMesh를 레벨에디터에서 추가해줘야 했습니다. 이제 이마저도 C++에서 추가해보겠습니다. AClassOnly::AClassOnly() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; Mesh = CreateDefaultSubobject(TEXT("MESH")); RootComponent = Mesh; ConstructorHelpers::FObjectFinder SM(TEXT("/Game/StarterConte..
언리얼 C++ StaticMesh컴포넌트 추가하기 레벨블루프린트에디터에서 인스턴스에 추가했던 스태틱메시컴포넌트를 이제 C++코드상에서 추가해 보겠습니다. ClassOnly.h 맨밑에 아래 2줄을 추가해줍니다. public: // Called every frame virtual void Tick(float DeltaTime) override; UPROPERTY(VisibleAnywhere) UStaticMeshComponent* Mesh; }; UPROPERTY(VisibleAnywhere)는 아래 변수를 리플렉션해주는겁니다. 디테일에 표시되게 해주는거죠. UStaticMeshComponent* Mesh; 컴포넌트의 주소를 담을 포인터를 하나 만들어 줍니다. ClassOnly.cpp를 열어 다음과 같이 아래 2줄을 추가해주빈다. AClassOnly::AC..
C++ 퀵스타트 - 액터움직이기 SetActorLocation() 1 - 필수 프로젝트 구성 런처에서 언리얼 엔진 을 엽니다. 새 프로젝트를 생성하기 가 나타납니다. 새 프로젝트 탭을 클릭한 다음 C++ 탭을 선택합니다. 거기서 기본 코드 를 선택하여 깨끗한 시작점을 확보하고, "시작용 콘텐츠 포함" 설정되었는지 확인합니다. 프로젝트 이름을 지어줘야 하는데, 여기서는 "inflearn" 라 하겠습니다. 이제 프로젝트 생성 을 클릭하여 시작하면 됩니다. 이제 언리얼 에디터 가 새 프로젝트를 열 것입니다. Visual Studio 역시 프로젝트가 만든 솔루션 파일을 열어 로드할 것입니다. 2 - C++ 클래스 생성 언리얼 에디터 에서 File (파일) 드롭다운 메뉴의 New C++ Class... (새 C++ 클래스...) 명령으로 새 클래스를 만들 수 있습니다. 부모를 ..
충돌(Collision) 처리하기 콜리전 생성하기 BP_Bullet를 열어 Components +Add후 BoxCollision을 추가하고 이름을 BoxCollision으로 해줍니다. BoxCollision은 리전 처리를 위해서는 콜리전이 Root위치어야 합니다. DefaultSceneRoot위치로 드래그 해줍니다. Cube를 드래그해서 BoxCollision의 자식으로 넣어줍니다. 뷰포트에서 보면 Cube와 BoxCollision의 사이즈가 맞지 않습니다. Bullet Scale을 변경했기 때문입니다. Collision의 Shape>BoxExtent를 다음과 같이 변경해서 맞춰줍니다. 프로젝트 세팅스를 열어 Engine>Collision탭에서 Object Channels> New Object Channel을 클릭해 새채널을 추가합니다...
적 Enemy 만들기 이제 적을 만들어 보겠다 블루프린트 폴더에 +Add후 블루프린트클래스/액터/ 이름 BP_Enemy로 블루프린트폴더에 저장한다. BP_Enemy열고 컴포넌트 +Add Cube를 추가해준다. BP_Enemy 열고 My Blueprint탭에서 변수+ 클릭히 moveSpeed(Float)를 추가한뒤 컴파일후 디폴트값을 800으로 한다. BP_Bullet에서 이벤트그래프를 카피해서 복붙해준다. 잘보면 모든 노드의 Target이 self이기때문에 가능하다. 방향은 Enemy를 생성할때 변경할것이므로 여기서는 이대로 마친다. Enemy공장액터 제작하기 Enemy도 총알과 마찬가지로 레벨에서 생성한다. BP_EnemyFactory이름은 블루프린트클래스를 부모는 액터로 생성해준다. 이 블루프린트는 에너미만 생성하기 때문..
총알 만들기 총알은 마우스 좌클릭을 하면 자동으로 생성되어 발사될것이다. 이후 자동으로 움직이게 된다. 유저의 키입력으로 움직이지 않으므로 부모클래스는 Pawn이 아니라 Actor면 충분하다. ContentDrawer를 열고 +Add를 눌러 Blueprint Class를 선택후 부모로 Actor를 선택한후 이름을 BP_Bullet로 Blueprints폴더에 저장한다. BP_Bullet를 열어 Add Component 버튼을 클릭하고 기본 외형(Base Shape)중에서 Cube를 선택하여 뷰포트에 끌어다 놓고 Scale을 다음과 같이 한다. EventGraph를 열어 다음과 같이 만들어 주고 컴파일 해준다. BP_Player와 비슷하다. 테스트를 위해 LevelEditor 뷰포트에 BP_Bullet를 배치하고 플레이..
Player만들기 컨텐트드러워의 +Add를 클릭하고 우클릭후 블루프린트클래스를->Pawn->이름을 BP_Player로 한후 Blueprints폴더에 저장합니다. Pawn은 Actor부모에 키입력을 받아 움직이게 해주는 메서드가 추가되어 있는 블루프린트 클래스 입니다. Character는 애니메이션도 추가된거구요. BP_Player를 클릭후 컴포넌트탭의 +Add를 눌러 Cube를 끌어다 놓습니다. 사용자 입력 바인딩하기 키보드액션을 액터와 연결하기 위해서 바인딩을 해야합니다. 프로젝트세팅의 왼쪽 Input탭을 선택합니다. Axis Mappings +를 클릭하고 이름을 Horizontal로 하고 A와 D를 등록하고 A의 Scale은 -1.0으로 해줍니다. 다시 Axis Mappings +를 클릭하고 이름을 Vertical로 ..
프로젝트 만들기 언리얼 Games Category에서 Blank를 선택하고 Starter Content를 선택하고 프로젝트 이름은 Shooting 만듭니다. 컨텐츠드로워 Contents폴더 아래 Maps와 Blueprints폴더를 만듭니다. File-New Level을 선택하고 템플릿은 Empty Level 템플릿을 선택합니다. MaiMap으로 이름을 바꾸고 Maps폴더에 저장합니다. 에디터가 실행될때나 앱으로 만들었을때 최초 실행할 레벨을 MainMap으로 설정하겠습니다. Project Settings에서 Maps&Modes항목을 선택후 Editor Startup과 GameDefault Map둘다 MainMap으로 설정합니다. Game Mode Base 제작하기 콘텐트드로워를 열어 Add+를 클릭후 블루프린트 클래스를..
협업시 관리해야할 언리얼 엔진 4 디렉토리에 대하여 이번에는 언리얼 엔진 폴더 구조에 대해서 한번 알아보려고 합니다. 프로젝트 파일을 백업하거나, Git이나 SVN을 사용하여 협업을 할때 어떤 파일을 지우거나 한정하여 관리해야할지 막막했던 상황이 한번쯤은 다들 있으실것 같습니다. 이런 상황을 대처하기 위해서 언리얼 프로젝트 파일이 어떤 구조로 되어있는지 한번 살펴보도록 하겠습니다. ※ 언리얼 엔진 도큐먼트를 보면 여러가지 디렉토리가 있지만, 특별한 세팅없이 생기는 게임 프로젝트 디렉터리만 설명하겠습니다. 언리얼 엔진 디렉터리 구조 도큐먼트 : http://api.unrealengine.com/KOR/Engine/Basics/DirectoryStructure/index.html 깃이나 SVN, 퍼포스 같은 버전관리 툴로 디렉터리를 관리할때는 필수적인 파일만..
언리얼 깃허브 연동 3 올리고 받기 1. Push하기 GitHub 리포지터리에 자료를 올리는 것을 Push라고 한다. 이는 Commit(커밋)과는 약간 다른 개념으로, 변경 사항을 (로컬) 리포지터리에 저장하는 것이 Commit (로컬 리포지터리의) 변경 사항을 GitHub(공유) 리포지터리에 업로드하는 것이 Push다. 커밋할 땐 요약(Summary)과 설명(Description)을 잘 작성해, 다른 팀원들이 "어떤 사항이 변경됐는가?"를 쉽게 파악할 수 있게끔 해야 한다. 요약을 안 적으면 커밋이 활성화되지 않아 처음에 횟깔리지만. 요약이름이 분기점 이름이 되기 때문이다. 날자시간등으로 자동생성되지 않는다 언리얼 작업에서, 지금껏 작업한 내용을 커밋하는 방법엔 두 가지가 있다. 1-1. 언리얼 엔진에서 커밋하기 먼저, 언리얼 엔진 내부..
언리얼 깃허브 연동 2 - 팀원편 1. 컴퓨터에 리포지토리 클론 초대 링크를 받고 들어온 팀원도 리포지토리와 언리얼을 연동시켜야 한다. 컴퓨터 내에 로컬 저장소를 생성해보자. 우선 GitHub Desktop을 켜면 위와 같은 창이 나타난다. File - Clone repository를 눌러 초대받은 리포지토리를 불러온다. 초대받은 리포지토리를 선택하고, Local path에서 경로를 지정해준다. 이때 경로엔 한글이 입력되지 않게 주의한다. 이 폴더 내에 언리얼 프로젝트를 생성할 건데, 언리얼 프로젝트는 경로 상 한글이 있을 때 에러가 나며 열리지 않는다. 다행히 팀원에겐 영향을 끼치지 않지만, 꼭 영어로만 경로를 설정해주자. 클론한 리포지토리가 Git LFS를 사용 중이기에, 위와 같은 화면이 뜬다. Initialize Git LFS 버..