폐기/UE4-RoadToTutorials

[UE4] 강좌 따라가기 4

KGW2027 2021. 12. 1. 00:10
728x90
반응형

컴퓨터 갑자기 맛가서 재조립하고 SSD하나 새로사고 하느라 거의 1주일을 쉬었는데, (사실 좀 놀았..)

어쩃든 다시 시작해보자.

 

https://learn.unrealengine.com/home/learningPath/119039

 

Epic Games

 

www.unrealengine.com

기존에 건축디자인? 뭐 그런 쪽을 따라가고 있었는데,

갑자기 맥스랑 디자인된 건물의 익스테리어 디자인 이런거 나오길래 상급자용인거같아서 도망쳤다.

그리고 선택하게 된게 이 "게임 개발을 소개합니다" 인데, 초심자용으로 딱이다. 내 수준에 딱 맞는 듯

 

본격적으로 들어가는 곳에서는 FirstPersonExample맵에 StartContent넣어서 프로젝트 만들면되는데,

이걸 스타터팩으로 만들어둬서, 쉽게 다운할 수 있게 쿠폰사용하면 보관함에 추가되고.. 뭐 이런식으로 받을 수 있다.

편함

 

--------------

 

0.

 블루프린트에서 노드 연결된 엣지는 Alt클릭으로 지울 수 있다.

 엣지 중간을 더블클릭하면, 한번 더 꺾을 수 있는 중간 포인트가 나오는데, 여기서 여러 갈래도 가능

 B누르고 좌클릭하면 Branch 노드가 생성된다. (숏컷)

 

메인 렌더링뷰? 에서 액터 선택하고 Ctrl+B하면 콘텐츠 브라우저에서 그 액터 파일로 이동됨.

 

1. 캐릭터 기능 추가

달리기 기능

 1. Sprint 입력 액션 : Project Settings > Input(입력) > Action Mapping 에서 추가된 액션의 입력을 받아온다.

 

2. LShift를 누르기 시작~누르고 있는 상태(Pressed)에서는 위쪽 Branch 작동,

   눌럿다가 때진 상태(Released)에서는 아래쪽 Branch 작동

   IsCrouching 의 값(Bool)에 따라서 True/False로 나눠짐

 

3. Pressed(Crouching = True) 에서는 Crouching 상태를 중단하고 달리기 상태를 시작하고, 이속을 설정한다.

   Pressed(Crouching = False) 에서는 바로 달리기 상태를 시작하고, 이속을 설정한다.

   Released(Crouching = True) 에서는 달리기 상태를 종료하고 종료. (이미 WalkSpeed가 Crouching 으로 설정됨)

   Released(Crouching = False) 에서는 달리기 상태를 종료하고, 이속까지 설정한다.

 

4. Character Movement는 캐릭터 액터의 컴포넌트로 캐릭터의 세팅값? 을 가짐. 여기선 이 CharacterMovement의 MaxWalkSpeed를 바꿔서 이속을 조절한다.

 

5. MaxWalkSpeed, MaxSprintSpeed의 데이터를 가져와서 이속을 변경함.

이렇게 변수들이 있다. 오른쪽의 눈 표시는 뜨고있으면 public 감고있으면 private란 뜻

 

 

Crouching(앉기) 기능

달리기랑 대체적으로 비슷함.

앉기 키를 눌렀을때 달리는 중이면 달리기 종료>앉기

 

다른점이 뒤의 T_Crouching 부분인데, 이건 Timeline으로 애니메이션같은거 만들 때 쓸 수 있음.

더블클릭하면 위와 같은 창이 나오는데 저렇게 0초 Value : 0, 0.5초 Value : 1로 해서

Lerp에 Alpha로 연결함.

Lerp는 Alpha가 1에 가까울수록 A, 0에 가까울수록 B에 가까운 Value로 셋해주는 함수임.

 

즉 0초일때는 96, 0.5초일때는 50에 가깝게 자연스럽게 변경된다는 뜻.

이걸 Capsule Half Height에 연결해서, 앉는 상태에서는 키가 작아지게 됨.

 

Timeline는 Play로 가면 정방향 진행, Reverse로 가면 역방향 진행하고 진행되던 상태에서 바로 진행됨

앉다가 0.2초후에 손때면 타임라인 Reverse도 0.2부터 리버스 한다는 뜻.

PlayFromStart나 ReverseFromEnd는 이렇게 중간부터 자연스럽게 되는게 아니라,

무조건 0초부터 아니면 무조건 0.5초부터 이런느낌인듯.

 

이건이제 디버그용 코드중에 마우스 휠을 올리면 이속이 빨라지고, 휠을 내리면 이속이 느려지게 하는 코드임.

오른쪽 끝의 Print String은 플레이 중 왼쪽 위에 숫자로 나옴. 색깔 설정, 몇초 지속 이런거 설정 가능

 

 

이건 체력바 설정 같은건데,

P 키를 누르면 체력이 10씩 줄어듬, BeginPlay에서 체력 기본값은 100으로 Set되있고,

 

Update Health Bar같은 경우에는 User Interface > Widget Blueprint로 만든 체력바 를 업데이트 하는 부분임

이런 식으로 Update Health Bar가 작동하면 체력 게이지가 백분율에 맞춰서 줄어듬.

아래쪽은 체력이 50이하면 체력바가 빨간색, 50이상이면 초록색이 되게 되는거임.

어느쪽이 초과인지 미만인지 나는 몰?루

 

그리고 위의 Debug쪽 코드에서, Update Health Bar 아래에 있는 Map Range Clamped는

위에서 준 Value값이 In Range A,B 에서의 위치를 Out Range A,B로 바꿔서 출력해주는 함수임.

체력이 100에 가까울수록 0, 체력이 0에 가까울수록 1임. 이건 Post Process의 Blend Weight에 연결됬는데,

Post Process는 화면 채도를 0으로 만드는 컴포넌트고, Blend Weight은 적용도? 투명도? 뭐 그런거임.

체력이 낮아질수록 화면 채도가 낮아지게 되는 코드

 

--------

 

2. 문 열고 닫기

 

먼저, 같은 뷰포트를 가진 문들이라면 열고 닫는 이펙트는 모두 공유하기 때문에, 부모클래스가 있음

이런식으로 OpenDoor, CloseDoor가 구현된 액터인데, 만들 문들은 모두 이걸 상속받아서 만든다.

그러면 그 문들은 OpenDoor, CloseDoor를 따로 만들 필요 없이 사용할 수 있겠지

 

 

먼저 Overlap 방식의 문, 이건 자동문임

오른쪽처럼 콜리젼을 만들어두고, 이 콜리젼에 닿은 액터가 캐릭터면

콜리젼에 들어올때는 OpenDoor, 나갈때는 CloseDoor가 작동함.

중요한건 이 콜리젼의 디테일패널에서 Generate Overlap Events가 꺼져있으면 오버랩 작동안하고,

콜리젼 프리셋의 OverlapAllDynamics 저기 세팅에 따라서도 작동하는 오브젝트 종류가 달라짐

 

 

두번째로는, Interact 방식. E키 누르면 열고 닫는거임

위의 Overlap이랑 비슷한 코드인데, 위는 Open/Close가 바로 나오고,

여기는 Enable Input, Disable Input이라는 점이 다르다.

콜리젼 범위에 들어와서 E를 눌러야만 문이 열리고, 나간 상태에서는 E를 아무리 눌러도 작동안함. Disable해놨으니까

문 열고닫히는건 플립플롭이용해서 토글되게 한다.

 

 

세번째는 Interface를 활용한 방식인데 이건 좀 복잡함

 일단, BPI_Interaction이라는 이름의 인터페이스를 만들어 줬고, 여기에 Interact라는 이벤트를 만들어놨음.

문은 BPI_Interaction을 상속받고, Interface 이벤트가 작동할때마다 토글식으로 문이 열리고 닫히게 해놨다.

 

그럼 이제, E키를 누를 때마다 Interact 이벤트가 발동하게 해야겠지? 이건 Player에서 한다.

이런 좀 복잡해보이는 코드인데,

먼저 이 프로젝트에서 캐릭터의 중심은 카메라(First Person Camera)임.

그래서, E키를 누를때 마다, 캐릭터 바로 정면 부터 정면으로 5m앞까지 나가는 SphereTrace를 발사한다.

그러면 이 발사된 Trace가 어떤 콜리젼에 닿았는지가 Out hit에 나오는데,

Break Hit Result > Hit Actor를 통해서 닿은 콜리젼이 BPI_Interaction 인터페이스를 상속받았는지 검사함.

(Branch 2개는 1. 뭔가에 부딪히긴했냐? 2. 인터페이스 상속받았냐? 이렇게 2개임)

그리고 이 조건 두 개를 모두 만족하면 부딪힌 액터의 Interact 이벤트를 작동시킨다.

 

이거 만들때 되게 자바프로그래밍하던 생각나서 좋았음.

 

그리고

이런것들을 이용해서 Sound, Particle을 재생할 수 있다.

Sound같은 경우엔 Cue라는게 있는데, 이걸 이용해서 랜덤사운드같은것도 만들 수 있다고함.

 

 

-----

 

추가적으로, 저번에 내가 집 초안같은거 만들어서 UE에 불러왔었는데, 빈공간도 모두 안들어가졌던 적이 있었음.

이거같은 경우에는 액터 블루프린트 쪽 들어가서, 뷰포트 간다음에 컴포넌트를 선택하고

Static Mesh? 이거 더블클릭하면

 

대충 이런 창이나오는데, 여기서 저 메시를 누르고

위의 탭에서 콜리전>자동컨벡스콜리전 을 하면 복잡한 모양에 대한 콜리전을 만들 수 있다.

단순하게는 그냥 캡슐 콜리전, 박스 콜리전 이런걸로 해도 된다는 듯 함.

 

이전 프로젝트를 가져와서 집 만들었던거 콜리전 적용해보고싶지만

포맷하면서 다 날아감

깔끔한 드라이브들..

 

-------

 

오늘은

이걸 다들었으니

 

내일은

배경 찍먹 가자~

728x90
반응형

'폐기 > UE4-RoadToTutorials' 카테고리의 다른 글

[UE] 강좌 따라가기 6  (0) 2021.12.06
[UE4] 강좌 따라가기 5  (0) 2021.12.02
[UE4] 강좌 따라가기 3  (0) 2021.11.24
[UE4] 강좌 따라가기 2  (0) 2021.11.23
[UE4] 강좌 따라가기 1  (0) 2021.11.23