Slack 과제 TIL 2_완료
머티리얼 개선
이전에 만들었던 테두리 머티리얼이 보기 좋지 않아서
머티리얼을 다시 수정하였다
-
Blend Mode: Translucent
머티리얼의 투명도를 사용하여
외곽선을 만들어주는 staticMesh를 ‘테두리’만 표현하기 위해 사용
픽셀마다 0~1 의 Opacity 값 사용 가능하며
그렇기에 Fresnel을 같이 적용하기 위해 Emissive Color와 같은 값을 사용
(다만 ZBuffer에 쓰이지 않기에, ‘반투명’오브젝트가 겹치는 상황에선
‘깊이 순서’가 꼬일 수 있으므로 주의할 것) -
Shading Model : Unlit
머티리얼의 ‘광원,그림자,노멀 계산’을 생략하고
Emissive Color가 최종 색상을 결정하는 모델
광원 등에 의하여 밝기와 색상이 변하지 않고
항상 동일한 테두리 효과를 위해 사용
(단순한 효과 구현을 보다 가볍게 할 수 있다) -
Two Side : 체크
메시의 ‘뒤집힌 면’(backface)도 머티리얼 렌더링
(기본적으론 ‘컬링’에 의해 렌더링 되지 않음)
그러나 우린 ‘투명한’ 머티리얼을 사용하기에
‘양면’을 다 그려야 정상적으로 보인다
(체크 해제 시, 앞면만 보이기에 ‘절반’만 테두리가 있는 상황 발생)
이후, 파라미터 값 조정과 머티리얼 쉐이딩 시간을 절약하기 위해
Material Instance를 생성하여 사용하였다
바뀐 문의 테두리 느낌
기존보다 얇아졌지만 제대로 테두리만 빛난다
문 열고 닫기
피카소도 울고 갈만한 표현 실력
내가 원하는 그림은
플레이어의 ‘서 있는 위치’에 따라서
문이 열리는 방향을 ‘앞/뒤’로 다르게 열게 하는 것을 원하였다
따라서 플레이어를 바라보는 문의 방향을 구하고
(P - D)
이후 문 자체의 정면 벡터(FV)를
‘내적’하여 (Dot)
그 값이 0 이상이라면
‘플레이어’가 문의 정면에 있다는 것을 판별할 수 있다고
생각하였다
플레이어로 부터 Actor Location을 가져오고
이후 자신의 Actor Location을 빼줌으로서
(P - D)를 만들 수 있었다
(방향만 필요하므로 Normalize)
이후 자신의 Forward Vector와(나중엔 Right Vector로 수정)
내적하여 그 값이 0 이상인지 판별하였다
이후 ‘문’이 열리는 상황인지
닫히는 상황인지를 bool 변수를 설정하여 판별하였고
Tick 이벤트의 각 Open/Close 함수에서
Rotate 시켜주었다
의도한 대로 플레이어의 위치에 따라
열리는 방향이 다르게 열린다!
대쉬 기능 추가
맵 자체는 LandScape로 넓게 만들었는데
플레이어가 이동하는 속도가 생각보다 느렸다
그렇기에 대쉬 기능을 만들어 이동속도를 늘려보았다
Input Action에서 Bool 설정 후
Mapping Context에서 L.Shift로 값을 잡았다
이후 Player 쪽에서 Event를 설정해주면?
(나는 Shift를 누르는 동안 유지되며,
뗀 순간 원래대로 돌아가길 원해서
Started/Completed에 설정하였다)
매우 역동적인 선인장
대쉬가 잘 구현되었다!
기껏 BP Interface 상속 받았는데 더 만들것 없을까
사실 BPI를 통해 InterAct를 만들어서
Player 입장에서나, 새로운 BP에서
Event Interact 부분만 새로이 구현해주면
다른 Interact 물체를 빠르게 만들 수 있었기에
먼저 Emitter 효과를 넣어주는 물체를 만들고 싶었다
불타는 화로
‘화로’의 위쪽에 Particle을 생성해주는 간단한 BP를 작성하고…
다가가서 E키(Action)를 누르면
불타는 효과가 잘 보인다!
쌍방향 포탈
Other Portal이라는 자기 자신 타입의 BP 변수를 생성하고
Editor에서 서로 묶어주는 방식으로 쌍방향 포탈을 가볍게 완성하였다
(해당 BP 변수를 Public 설정하여 쉽게 구현하였다)
실제로 쌍방향 포탈을 구현하려면
전용 매니저를 통한 포탈 관리와 ID 등을 통한 판별 등이 필요하기에
매우 간략하게 Editor를 통해 구현하였다
(실제로 이렇게 하면 유지보수 문제가 심각해진다…)
관련 영상은 아래쪽의 동상 부분이다
마무리
영상
탑뷰 및 스크린샷
컨셉
고대 아시아와 길 잃은 선인장 몬스터
문을 열고 다니거나
제단에 불을 붙이거나
동상들을 작동하여 다른 공간으로 가거나
하는 등의 상호작용 요소를 통해 맵 탐험
사용 에셋
Fab + Unreal Engine 강의 2주차의 Basis 프로젝트
소감
전체적인 BP의 간략한 복습이 재밌었다
Player, ABP, LandScape, Material, Foliage 를 복습했고
간략한 Interaction을 위하여
BP Interface를 상속받게 하여
상호작용 BP 클래스를 비교적 빠르게 구현할 수 있었다
다행히 이틀 차에 마무리를 할 수 있었기에
다시 남은 시간은 강의를 들어볼 생각이다
댓글남기기