언리얼에는 트레이스 (a.k.a. "레이캐스트") 라는 시스템이 있다.

 

간단히 요약하면 원하는 방향으로 빔을 쏴서 무언가가 걸리면 인식하는 시스템 정도로 이해해주면 되겠다.

 

언리얼에서는 해당 시스템을 좀 더 "디테일하게" 나눠서 판단을 하도록 해두었는데

 

이번에 회사에서 작업하면서 해당 시스템 관련 문제를 하나 마주쳤다.

 

 

 

 

언리얼 트레이스는 크게 2가지로 나뉘어진다.

Single Trace

Multi Trace

 

Single Trace는 "히트한 단 한개의 타겟"에 대한 결과만을 리턴

Multi Trace는 "목적지까지 다다랐을때 히트한 모든 타겟" 에 대한 결과를 리턴한다.

 

히트한 결과는, "HitResult" 라는 자료형/배열로 리턴되며, Trace 자체가 히트했는지는 각 함수의 리턴값을 통해 알 수 있다.

 

그런데 여기서 함정.

 

HitResult가 있더라도 Trace 함수의 Hit 결과는 False가 나올 수 있다.

 

이게 무슨소리냐

 

 

이걸 설명하기 위해서는 언리얼 콜리전 판정의 특이사항을 알 필요가 있다.

 

https://www.unrealengine.com/pt-BR/blog/collision-filtering

 

Collision Filtering in Unreal Engine 4

Choosing what collides is obviously very important, but it can be tricky, and it’s a problem that we have spent quite a while discussing while developing UE4. The system we have can seem a little complex at first, but it is very powerful and consistent,

www.unrealengine.com

 

 

자세한 내용은 위의 링크를 참고하면 확실하게 볼 수 있으니, 필요한 설명만 하도록 하겠다.

 

 

언리얼의 콜리전은 총 3가지 타입으로 분리된다.

 

무시 (Ignore) / 오버랩 (Overlap) / 충돌(Block)

 

 

 

Ignore는 모든 충돌 방식을 Ignore

Overlap은 Overlap / Block을 Overlap (판정은 발생하나 지나침)

Block은 Block끼리 충돌

 

 

 Trace에서 추출되는 결과는, Overlap과 Block 2가지만 추출된다. (아무래도 Ignore는 충돌을 안하니까...)

그런데, Single Trace의 경우, "Overlap" 결과는 리턴되지 않는다.

 

이에 대해서 여러 자료를 좀 찾아보았으나, 공식 문서 상에서는 확답이 없어 분석해본 결과,

공식문서에서는

1. Trace 결과는 "Hit" 라는 표현을 사용한다.

2. 공식문서에서, SingleTrace에는 없는 "Overlap" 이라는 표현이 MultiTrace에서부터 등장한다.

 

라는 결론을 얻을 수 있었다.

 

 

 

이게 무슨말이냐, 예시를 들어 설명하자면...

 

 

 

우선 간단하게 테스트용 함수를 구성했다.

테스트용 채널은 Camera 채널을 이용.

 

SingleTrace를 이용하며, Hit 시 출력은 True, 아니라면 False가 나올것이다.

 

 

뒤의 파란 블럭은 Camera 채널을 Block, 앞의 빨간 블럭은 채널을 Overlap으로 지정했다.

 

 

그리고....

 

 

빨간색 가까이에 가면 Hit Result가 False

 

 

 

파란색의 경우, 화살표 위치에서처럼 Hit 결과가 보이면서 Hit가 True로 나온다.

 

 

 

 

 

그럼 Overlap된 액터는 검출이 불가능한가?

 

그건 또 아닌게, 위에서 말한것과 같이 MultiTrace의 경우에는 Overlap이 검출이 된다.

 

 

 

 

Trace를 Multi로 변경했다.

 

 

 

아무것도 없으면 Hit Result False, Hit 0

 

 

Overlap만 있으면 Hit Result : False, Hit 1

 

 

Block이 있다면 Hit Result : True, Hit 1

 

 

즉, 결과를 요약하면 다음과 같다.

 

 

Single Trace Hit Result (히트 결과) Out Hit (히트 액터 검출)
Ignore False False
Overlap False False
Block True True
Multi Trace Hit Result (히트 결과) Out Hit (히트 액터 검출)
Ignore False False
Overlap False True
Block True True

 

=
Overlap 설정으로 충돌한 (채널/타입) 경우에는 Hit Event Result (Trace의 성공/실패여부) 를 변화시키지 않는다.
SingleTrace의 경우, Overlap만 발생한 경우에는 Hit Event Result가 False로 발생하면서 결과물이 리턴되지 않음.
MultiTrace의 경우 Overlap이 걸려도 HitResult가 채워지나, Hit Event Result는 Block으로 끝나지 않는 한 False로 리턴된다.

 

 

 

왜 Overlap에만 이런 특이한 경우가 반영되었는지는 (공식문서상 확답이 없어서) 잘 모르겠지만... 

작업할때 참고할 필요가 있을것 같다.

 

1. EnhancedInput 사용시 No Such File Of Directory 발생

해결방안 : (Project).build.cs 파일의 "PublicDependencyModuleNames" 에 EnhancedInput 추가

 

https://www.reddit.com/r/unrealengine/comments/za43ip/there_is_no_file_named_inputactionvalueh/

아직 이친구가 정식 기능이 아니라서 (?) 그런가 노멀 언리얼 엔진에서는 찾을수 없는 플러그인 / 기능들이 일부 있다.

 

Lyra Starter Game을 베이스로 설명하면, 게임모드의 업그레이드버전 (이라고 소개하는) "Gameplay Experience" 도 Lyra 소스코드에만 전용으로 박혀있는 상태고...

당연히 5.3쯤 되면 기본일줄 알았지!

 

 

일부 기능들은 여전히 + 공식에서조차 "Lyra에서 복사해오세요~" 하고 있는 실정이다..

그래서 지금 필요한게 뭐였냐..

 

저기 있는 Gameplay Experience를 사용하고 싶었는데 순정 프로젝트에선 도저히 안보여서 어디박혀있나 찾고있다가 해당 파일이 "LyraWorldSettings.h" 로 오버라이드 되어있던것을 발견했다...

 

아잇 진짜

 

Lyra 흔적 안 붙이고 싶은데 

 

 

* 활성화를 위한 플러그인 리스트

 

 

 

1.Gameplay Abilites (필수)

2.Gameplay Abilities Game Feature Actions

3.Game Features

4.Modular Gameplay

 

 

그리고, 추가 플러그인으로 모듈러 게임플레이 피쳐 추가시 "게임 피쳐" 로 추가 (중요!)

 

참고
https://docs.unrealengine.com/5.0/ko/game-features-and-modular-gameplay-in-unreal-engine/

 

게임 피처 및 모듈형 게임플레이

빠르게 활성화하거나 비활성화할 수 있는 독립형 피처를 구축합니다.

docs.unrealengine.com

 

https://youtu.be/5V626L37z9I

 

일단 완성작부터 봅시다.

 

 

 

 

 

 

최근에 어쩌다보니 (...)  블루아카이브 팬게임을 만들고 있었는데

일단 국내 규정상 게임을 배포하거나 하는건 막혀있으나... 그냥 트레일러라도 기깔나게 뽑아보자는 마인드로 작업중에 있습니다.

 

그러던 중, 노노미 캐릭터의 흉부를 좀 더 자연스럽게 살려보자는 생각이 들어서 흔히들 쓰이는 바스트모핑을 구현해보고자 했습니다.

 

참고자료가 은근 없는듯하면서도 있더라구요.

 

https://youtu.be/BFE5e-XUcwo

메인으로 참고한 영상은 이 영상입니다.

(사실 그냥 이거 따라한거 적어두는거임)

 


1단계. 사용할 모델을 구합니다.

일단 저 같은 경우에는 팬게임에 사용할 모델을 팀원분에게 받아서 그걸 사용했구요.

 

그 외는 뭐... 알아서 구해보시면 될거같습니다...

 

 

 

 

2단계. "피직스 에셋" 을 열어줍니다.

없다구요? 

 

원하는 "스켈레탈 메시" (스켈레톤 아님) 우클릭 -> 생성 -> 피직스 에셋 -> 생성 및 적용 눌러주시면 됩니다.

 

 

3단계. 바스트모핑을 적용할 위치를 지정합니다.

여기서부터는 모델의 본 위치, 가슴 사이즈 등 온갖 차이로 인해 결과가 천차만별인 관계로...

대충 이런데 이게 있구나~ 해주시면 될거같습니다.

 

우선, 하이라키 설정에서 "본" 이 전부 보이게 켜주시고 작업하시면 좋습니다.

 

대충 가슴쪽의 본 - 피직스 볼륨 아래로 가슴 한개씩 쉐이프를 추가해주시면 됩니다.

아 물론, 가슴 본이 따로 있으면 거기다 추가해주시는게 베스트구요.

권장은 "스피어" 설정이라네요

 

저희 모델 같은 경우에는 가슴 본이 따로 잇는관계로, 각 가슴 본에다 하나씩 추가해놓겠습니다.

 

 

 

근데 좀 크죠?

 

 

4단계. 사이즈를 조절합니다.

설정은 복사할 수 있으므로 "한곳만" 수정하셔도 됩니다.

어차피 위치빼고 양쪽 다 사이즈도 그렇고 같을거 아닙니까 (아닌가?)

 

옆에서도 보고 하면서 재주껏 크기를 조절해줍시다.

 

 

조절한 결과

 

바스트 모핑이 적용될 사이즈보다 피직스 쉐이프가 큰게 좋은지 작은게 좋은지는 잘 모르겠는데 직접 한번 해보시면서 테스트해보시는게 좋을거같습니다.

 

뭐... 피직스 쉐이프의 형태가 사실상 언리얼에서의 충돌판정이니

 

 

크면 이렇게 되겠죠

아닌가?

 

 

 

5단계. 설정을 복사해줍니다.

다른쪽 가슴도 위치 맞춰줘야죠.

 

1) 설정을 복사해갈 쉐이프 정보를 가져갑니다.

프로퍼티 복사 하시면 돼요

 

 

2) 설정을 붙여넣을 쉐이프 정보를 넣습니다.

 

 

이렇게 하면, 위치 (및 회전값....?) 을 제외한 나머지 프로퍼티를 모두 가져옵니다.

가슴이 짝짝이가 됐는데...

위치는 재주껏 맞춰줍시다.

 

 

 

6단계. "컨스트레인트" 추가

컨스트레인트가 뭔지는 저도 정확히는 모르겠습니다... 뭐 애니메이션에서 쓰는 방향노드같은 친구겠죠?

 

근데 얘가 일단 보여야하니까, 하이라키 설정에서 켜줍시다.

그리고 "가슴->척추 본" 순서로 컨스트레인트를 추가합니다.

 

가슴 본이 척추에 달린거지 척추본이 가슴에 달린건 아니잖아요??

 

어려울거 없이, 그냥 가슴쪽 쉐이프 우클릭 -> 컨스트레인트 추가 -> 척추 본 선택하시면 끝입니다.

 

여기 순서가 좀 잘못되었는데, 척추 본 우클릭 -> 컨스트레인트 추가 -> 가슴 본으로 가셔야합니다.
반대로 하면...... 가슴이 막 날아갑니다. 저도 알고싶지 않았어요

 

이렇게 하시면 된다는 뜻.

 

7단계. 컨스트레인트 위치 조정

꼭 할 필요는 없어보이긴 하던데, 그래도 조정 해줍시다.

 

기본으로는 부모 본 (여기서는 Spine 4번) 에 가 있는데, 각 가슴쪽으로 옮겨주심 되겠습니다.

 

8단계. 바스트모핑 설정

여기서부터가 진짜 설정입니다. 여기 이후부터 건드는 설정을 이용해서 바스트모핑의 정도를 조절할 수 있어요.

 

우선, 지금 이 상태에서 시뮬레이션을 돌리면 굉장히 이상한 현상이 벌어질겁니다.

가슴이 축 쳐지거든요....

 

"컨스트레인트" 설정을 가서, 우선 스윙 모션을 죄다 락 걸어줍니다.

이거 얘기임

두번째로, 해당 설정 위쯤에 있는 Linear Limit 설정을 적당히 켜줍니다.

이건 모델의 종류에 따라 어떤걸 켜고 꺼야하는지 다 다르기 때문에 직접 보셔야 합니다.

저도 샘플영상에서는 X만 켜던거 같은데... 저희 모델에서는 X,Z를 사용했어요.

 

Free말고 Limited 설정으로 해줍니다.

 

여기서 "제한" 수치 = 가슴이 움직일 수 있는 가동범위

라고 생각하시면 됩니다.

 

너무 크면 굉장히 이상해지니 적당히 조절해주시면 됩니다.

 

아까보단 덜 쳐졌는데요

 

다음, "선형 모터" 라는 설정을 건들여줍니다.

아마 이게 복원력쪽에 가까운거같아요. 자세히는 모르겠습니다.

위치 타겟 ON 해줄 축은 바로 위에서 설정한 Linerar Limit 에서 열었던 축을 지정해주시면 됩니다.

 

세기는... 생각보다 크게 쓰더라구요. 샘플에서는 2500썼습니다.

 

근데 저희 모델로는 1250정도가 괜찮은거 같아서 그렇게 세팅.

 

 

위에서 빼먹었는데, 복원력도 건들여줍시다.

0~1사이 값 넣어주시면 돼요. 이것도 넣어보면서 적당히 조절하시면 됩니다.

 

 

이제 테스트를 해봅시다.

 

9단계. 테스트

우선 가슴 설정에서 피직스 타입을 "Simulated"  로 변경해줍니다.

 

그리고, 물리상태를 보고싶은 피직스 쉐이프를 누르고, 시뮬레이트 -> 선택 시뮬레이트를 눌러 실행해줍니다.

 

그리고, 컨트롤 + 우클릭을 통해서 움직임을 테스트해보시면 됩니다.

 

보시고.. 적당히 수치 조절하시면 돼요.

 

10단계. 적용

 

이제 만들어 진 피직스 에셋을 스켈레탈 메시에 적용시키고 사용하시면 됩니다.

 

사실, 애초에 피직스 에셋 만들때 바로 반영을 해뒀으면 굳이 적용하실필요는 없고, (필요에따라) 피직스에셋을 여러개 만드실 경우에는 "피직스 에셋 오버라이드"를 이용해주시면 됩니다.

 

좌측이 이번에 글 작성하면서 새로만든 모핑, 우측이 기본 모핑 (샘플 영상 보면서 만든것) 입니다.

 

생각보다 괜찮죠?

 

다른곳의 흔들림 (엉덩이라던가...?) 도 비슷한 원리로 작업이 가능하니 필요한곳이 있다면 많이 써주세요..

선행 작업 :

1. 에픽게임즈 가입

2. 깃허브 가입

3. PC에 Git 설치

4. 최소 300기가 이상의 여유 공간 확보 (SSD 권장)

5. 비주얼 스튜디오 설치 (2019 이상 권장)

 

 

언리얼 엔진을 본격적으로 사용하다보면, (프로그래머 입장에서) 불편한점이 슬슬 나타난다.

특히, 엔진파트의 내용을 추적해야할때, 에픽 런쳐에서 받는 기본 언리얼 엔진을 사용하면 엔진파트 추적이 불가능해서 추적이 막히는 경우가 종종 발생한다.

이런 경우를 막기 위해, 언리얼 엔진의 코드를 받아, 직접 빌드하여 설치하는 방법을 간단히 설명하고자 한다.

 

 

 

 

기본적인 내용은 https://docs.unrealengine.com/5.0/ko/downloading-unreal-engine-source-code/ 을 참고하시기 바랍니다.

 

1. 우선, 언리얼 엔진 사이트에서의 가이드를 따라 깃허브 연동까지 진행합니다.

https://www.unrealengine.com/ue-on-github

 

GitHub 내 언리얼 엔진

GitHub에서 언리얼 엔진 소스 코드에 액세스하는 방법을 알아보세요

www.unrealengine.com

 

 

2. 깃허브 -> 에픽게임즈 -> 언리얼 엔진 레포지토리로 이동

 

 

3. 원하는 폴더로 이동, git 명령어

git clone https://github.com/EpicGames/UnrealEngine.git

입력

 

여기서 약 30기가 가량을 다운받습니다.

 

 

 

4. git을 받은 폴더로 이동하여, Setup.bat 실행

 

5. 파일 다운로드...

이번에도 역시 무지막지한 용량을 받습니다.

 

 

6. GenerateProjectFiles.bat 실행

 

실행 후 UE5.sin 파일 생성되는것 확인

 

7. VS 실행 후 솔루션 빌드 

솔루션 빌드를 통해 언리얼 인사이트 등 각종 추가 모듈도 설치합니다.

 

저는 빌드할때 빌드 세팅을 "DebugGame Editor"로 하고 수행했는데, 필요하다면 다른것으로 바꾸셔도 됩니다.

다만, 밑에서도 추가로 설명하지만 해당 솔루션 구성이 프로젝트 솔루션 구성과 동일해야합니다.

 

대신, 메인 빌드 프로젝트가 UE5로 놓여져있는지는 확인하셔도 나쁘진 않을듯.

 

시작 프로젝트 설정은 다음과 같이 할 수 있습니다.

 

8. 빌드를 기다립니다...

컴퓨터 사양에 따라 다르나, i7 9700K,  램 32기가, M2 SSD 쓰는 환경에서 빌드 약 3시간 걸렸습니다.

 

9. 완료 확인

완료가 되면 약 300기가 가량의 대형 폴더가 생성됩니다..

 

10. 사용하기

해당 엔진 코드를 적용할 프로젝트로 가서 우클릭 -> Switch Unreal Engine Version

다음과 같이 Source Build at ... 으로 되는 경로가 있으면 성공한것입니다.

 

해당 버전 선택후 빌드하시면 프로젝트명.sin 파일이 생성됩니다.

 

이제부터는 프로젝트를 열때 에픽 런쳐가 아닌 프로젝트 파일을 열어서 빌드하여 수행하시면 됩니다.

 

 

11. 주의사항

엔진 빌드시 사용한 솔루션 구성과 프로젝트의 솔루션 구성이 동일해야합니다.

동일하지 않다면, 기껏 빌드한 엔진을 다시 빌드해야하는 불상사가 발생할 수 있으니 주의.

 

간단한 블루프린트 사용법 및 샘플 에셋 제작방법

 

 

---------

일단...블루프린트가 뭐고 왜 나왔는지 까지의 깊은 설명은 생략하도록 하겠습니다.

간단히 설명하면 블럭맞추기 같은 느낌으로 작업하는 프로그래밍 수단이라고 생각하시면 됨.


앞으로 블루프린트는 약어인 BP로 부르도록 하겠습니다.

 

 

이번 시간에는 간단하게 "밟으면 3초후 사라지는 블록" 을 만들어보도록 하겠습니다.

 

1. 블루프린트 생성

가장 쉬운 방법은 콘텐츠 브라우저 화면 우클릭 -> 블루프린트 클래스 선택

 

그 외 다른 BP들 (레벨 BP등) 은 아래 블루프린트항목에서 찾아볼 수 있음.

 

 

블루프린트 생성을 누르면 다음과 같은 화면이 뜬다.

"모든 클래스" 에 대한 설명은 나중에 하기로 하고, 우선은 현재 보여져 있는 클래스들에 대해 설명하도록 하겠습니다.

 

명칭 설명 배치 위치 기타 (요약)
액터 월드에 배치 가능한 기본 오브젝트 레벨 월드에 배치된다 = 액터 BP
Pawn "컨트롤"이 가능한 액터 레벨 NPC 또한 "컨트롤러"를 가질 수 있음
캐릭터 "플레이어 컨트롤"이 가능한 Pawn 레밸 "플레이어"
플레이어 컨트롤러 플레이어 전용 컨트롤러 레벨 (보이지 않음) AI가 사용하는 AIController도 존재
게임모드 각 레벨에서 사용되는 기준을 가진 BP 레벨 (보이지 않음) 게임의 룰을 결정하는 에셋
Actor Component 추가 기능을 제공하는 Add-On BP 액터 BP에 부착 액터의 추가 기능 제공
Scene Component 추가 기능을 제공하는 Add-On BP 게임모드 BP 등에 부착 컨트롤러, 게임모드 등에 추가 기능 제공

 

 물론, 위의 7종만 있는것은 아니고, 더 많은 종류들이 존재하나 이는 이후 심화과정때 설명드리도록 하겠습니다.

 

우선은, 액터를 선택해서 BP를 하나 만들어줍니다.

 

 

 

2. 블루프린트 작업

블루프린트를 생성 후 열면, 다음과 같은 화면이 나옵니다.

여기서 유의깊게 보셔야하는것은

 

1. 뷰포트 탭

2. 이벤트 그래프 탭

 

2종입니다.

 

나머지는 천천히 봐도 돼요.

 

우선 뷰포트 탭입니다.

 

뷰포트 탭은 "현재 에셋이 어떻게 보이고 있는지" 를 육안으로 확인가능하도록 해주는 탭입니다.

즉, 이 에셋을 레벨에 배치하면 뷰포트 탭에 보이는대로 보인다는것이죠.

 

이제 이 에셋에 두가지 사항을 추가합니다.

우선, "밟혔는지" 여부를 판별할 수 있는 "Collision"을 추가합니다.

다음으로, "밟을 수 있는" 것을 만들어 줘야 하기 때문에, 블록 형태의 "Cube"를 추가합니다.

 

 

다음과 같이 배치되면 됩니다.

 

"저는 저렇게 된게 아니라 Default Scene Root라는게 있는데요?" 라는 의문이 생긴다면, 추가한 Component를 잡고 드래그를 해보세요.

 

 

저 두가지를 배치하고 나면, 뷰포트에 다음과 같이 보일것입니다.

 

우측의 디테일 탭의 수치를 조절하면서 크기를 적당히 조절합시다.

 

이렇게 생긴 친구들을 조절하시면 됩니다.

 

여기서 주의사항은, Box Collision의 크기가 Cube의 사이즈보다는 크거나 같아야한다는 것입니다.

작으면 Collision 체크가 제대로 안 일어날 수 있어요.

 

저는 이와같이 수정해서 사용하고자 합니다. (수치는 바로 위의 스크린샷에 있음)

 

이제, 이벤트 그래프 탭으로 가봅시다.

 

이벤트 그래프 탭이 다들 들어보셧을 "블루프린트 코딩"을 수행하는 부분입니다.

 

어떤 기능이 있고, 어떻게 사용해야하는지는 심화과정에서 천천히 설명하고, 우선 간단하게 설명드리도록 하겠습니다.

 

 

처음 들어오면 이 3가지 "이벤트 노드"가 보입니다.

 

각 이벤트가 발동시 수행되는 스타트 노드인데, 우리는 여기서 중간에 있는 ActorBeginOverlap 1종류만 사용할거에요.

 

우선, 이번에 만들려던  "밟으면 3초후 사라지는 블록" 에서 3초후 라는 이벤트를 수행하고자, "Delay" 함수를 추가합니다.

 

화면 우클릭 -> 검색창에 delay라고 검색하셔서 클릭 하시면 됩니다.

 

 

그다음, 블루프린트 코딩에서 가장 중요한 "노드 연결"을 하면 되는데...

 

그냥 먼저 수행할 노드의 우측 흰색 화살표를 드래그 해서 다음에 수행할 노드의 좌측 흰색 화살표로 연결해주면 됩니다.

 

이렇게 끌어서 놓으면
연결이 됩니다

다음, Duration의 수치를 3으로 바꿔줍니다.

 

해당 수치는 초 단위로, 좀 더 정밀한 값을 필요로 하면 소수점을 이용하면 됩니다.

 

다음, 이제는  "밟으면 3초후 사라지는 블록" 에서 "사라지는" 기능을 추가합니다.

 

우선은 간단하게, 액터를 소멸시키도록 하죠.

 

우클릭 -> 검색에서 destroy를 검색해서 Destroy Actor 노드를 가져와 연결합니다.

 

 

그럼 끝입니다.

 

전체 노드는 다음과 같습니다.

 

이제 만든 액터를 월드에 배치시키도록 하겠습니다.

 

이친구를 잡고 드래그해서 원하는곳에 배치하면 됩니다.

 

 

이제 어떻게 되는지 볼까요?

 

게임을 실행하고, 캐릭터를 조작해서 블럭 위로 올라가도록 합니다.

 

 

 

 

넵. 잘 작동하네요.

 

 


심화과정 1.

"블록이 사라지지 않고, 몇초 뒤에 다시 나타나게 하고 싶어요!"

 

그렇다면, 노드 설정을 조금 더 바꿔야합니다.

 

우선 작성하고, 설명을 드릴게요.

 

 

 

1. Delay Node : 방금 사용했던 딜레이 노드입니다.

2. Set Visbility : Cube를 보이지 않도록 처리합니다

3. Set Collision Enabled : 큐브의 충돌체크를 처리합니다.

4. Delay Node : 3초 뒤 다시 나타나도록 처리하기 위해 배치합니다.

5. Set Visbility : Cube를 다시 보이도록 합니다.

6. Set Collision Enabled : 큐브의 충돌체크를 처리합니다.

 

자세한 설명은 직접 찾아보시거나, 이후 심화설명때 설명드리겠습니다.

 

 

 

결과입니다.

 

이를 활용해서 점프맵 등을 만들 수 있습니다.

 

기본적인 BP 설명은 이정도로 하고, 다음에는 약간의 심화과정 (BP 이벤트 노드 설명 등)을 해드리겠습니다.

 

이번장에서는 간단한 조작법을 알려주도록 하겠습니다.

 

 


 

1. 콘텐츠 드로워 / 콘텐츠 브라우저

기본 세팅에서 좌하단에 있습니다.

PIE

 

누르면 이와 같이 왠 폴더들이 있는 창이 뜨는데, 우선은 레이아웃에 고정을 해줍시다. (꼭 할필요는 없음)

 

해당 창은, 유니티 엔진을 만져본 분들이라면 익숙할 콘텐츠 탐색기인데, 기본 창 1개 외에 추가 창들을 띄워서 파일을 이리저리 옮길수도 있다는 장점이 있습니다.

 

그치만 전 하나만 씀 ㅎㅎ;

 

만일, 파일 위치 이동 등의 이유로 추가 창이 필요하면

 

상단 메뉴 창 -> 콘텐츠 브라우저에서 추가 탭을 누르면 됩니다.

 

여기서 추가를 누르면
이렇게 하나 더 뜹니다

 

 

2. 실행 / 일시정지

언리얼 엔진에서 게임을 바로 실행하는걸 PIE (Play In Editor) 라고 부릅니다.

앞으로 PIE라는 단어를 많이쓰게 될것이니 알아두세요.

PIE 실행 버튼은 위에 있습니다. (단축키 Alt+P)

 

실행 버튼을 누르면 나머지 버튼들이 활성화 되는데, 필요에따라 사용하시면 됩니다.

 

버튼의 기능은 좌측부터 순서대로

 

1. PIE 재생/일시정지

2. 한 스텝단위 실행 (디버깅 시 사용)

3. PIE 중지

4. "게임에서 빠져나오기" : 게임 실행 도중 에디터 조작 가능

 

입니다.

 

---

+ 웃기게도 재생, PIE중지, 게임에서 빠져나가기는 단축키가 있는데

일시정지는 단축키가 기본 세팅이 안되어있습니다.

 

 

단축키 세팅은

편집 -> 에디터 개인설정에서 가능합니다.

 

 

여기로 와서
일반 -> 키보드 단축키
사실 위에 검색 메뉴에서 검색하면 됩니다.

 

 

여기 있는 PIE 설정을 조작해주면 됩니다.

 

버튼을 따로 두거나, 시작 단축키인 Alt+P를 토글에 배치하여 토글가능하도록 쓰는것도 좋습니다.

 

 

--------

3. 아웃라이너

우측에 배치되어있습니다.

 

레벨에 배치되어있는 액터 및 에셋들을 보여주는 창입니다.

 

더블클릭하면 해당 액터의 정보를 볼 수 있습니다.

 

4. 디테일

해당 액터가 어떤 에셋인지, 어떤 상태인지 볼 수 있습니다.

 

실행중에 조작한다고 해서 수정사항이 반영되는건 아니니 실행한 상태로 조작해놓고 왜 반영안되지? 하는 실수는 하지 않도록 합시다.

 

5. 출력 로그

개발시 굉장히 많이 쳐다보게 될 페이지입니다.

 

각종 로그들을 띄워줍니다.

 

필터를 누르면 메시지 / 경고 / 오류 등으로 필터링을 하여 데이터를 체크할 수 있습니다.

 

위치는 좌하단 콘텐츠 브라우저 바로 옆에 있습니다.

 

 

 

 

 

간단히 엔진의 기본 조작을 알려드렸습니다.

 

다음에는 개인적인 기준으로 언리얼 엔진의 꽃인 블루프린트 기본 설명, 조작 및 예시 에셋 제작 (밟으면 사라지는 블록)을 하도록 하겠습니다.

 

 

 


이번 페이지에서 설명한 기능 단축키 정리

 

1. Alt+P : PIE 수행

2. F8 : 빙의 상태 토글 (실행중인 게임에서 빠져나와서 조작 가능)

3. Shift+F1 : PIE에 붙어있는 마우스 커서를 빼서 외부 조작이 가능해집니다.

 

+ Recent posts