![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwf2a3%2FbtrZQd6cUFy%2FYhJHfX4KOs11IMhiftjJSK%2Fimg.png)
Unreal Engine: Ultimate Survival Horror Course Visual Effects - Exponential Height Fog를 배치해 안개 효과를 적용할 수 있다. Fog Density: 안개의 짙은 정도를 조정할 수 있다. Fog Inscattering Color: 안개의 색을 조정할 수 있다. Start Distance: 안개 효과가 시작될 거리이다. Fog Cutoff Distance: 이 거리 뒤부터는 안개 효과가 적용되지 않는다. Exponential Height Fog 액터의 위치 기준이 아니라 현재 카메라 기준이다. 성공적으로 안개 효과를 적용했다.
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmnKL%2FbtrZK1ZMZlS%2FMSxCKRbj4AtZNbWHbF2le1%2Fimg.png)
Unreal Engine: Ultimate Survival Horror Course Rendering Features - Motion Blur에서 카메라 회전 시 블러 효과를 줄 수 있다. Lens - Bloom에서 뽀샤시 효과를 줄 수 있다. Lens - Exposure에서 빛의 노출 정도를 조절할 수 있다. Min, Max Brightness의 값이 같으면 Eye Adaption 기능이 비활성화 된다. Lens - Chromatic Aberration에서 색수차 효과를 설정할 수 있다. 렌즈 굴절률 오류의 일종으로 중앙에서 멀어질 수록 삼원색이 분리되게 된다. Image Effects에서 비네트, 그레인 효과를 줄 수 있다. Vignette: 주변을 어둡게 만든다. Grain: 작은 파티클 알갱이들이..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs6m45%2FbtrZIFiTPMr%2FVIzXLWJ5EeNHAm8FGf5MKk%2Fimg.png)
Unreal Engine: Ultimate Survival Horror Course L1_Character에 오른쪽으로 몸을 내미는 LeanRight와 다시 돌아오는 UnLeanRight 이벤트를 생성한다. switch 노드를 이용해 입력 별로 다른 실행 흐름을 가질 수 있다. 카메라의 시작 Relative Location X를 저장하지 않고 매 실행마다 가져와서 사용했으므로 실제로는 LeanAmount보다 훨씬 더 움직이게 된다. X축 회전 방향만 바꿔 왼쪽으로 몸을 내밀기 위한 LeanLeft, UnLeanLeft 이벤트를 생성한다. Action 이벤트에서 상호작용 할 오브젝트가 없으면 오른쪽으로 몸 내밀기 기능을 실행한다. LeanLeft 키를 Q에 매핑한 후 이벤트에서 왼쪽으로 몸 내밀기를 처리한..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGiOKI%2FbtrZBF20q0Q%2FU63K1lrFgl2HoCmGEzlHLK%2Fimg.png)
Unreal Engine: Ultimate Survival Horror Course 레벨 목표 정보를 저장할 S_ObjectiveData Structure를 생성한다. 레벨 목표를 띄울 W_Objectives 위젯을 생성한다. 목표 텍스트를 변경하는 UpdateObjectiveText 이벤트를 생성한다. W_MainHUD 메인 위젯에 W_Objectives 위젯을 추가한다. L1_GameState에 레벨 목표를 구현하기 위한 함수들을 생성한다. 현재 목표를 반환하는 FindCurrentObjective 함수를 생성한다. 실행 핀이 없는 Pure Function으로 생성한다. W_Objectives 위젯의 텍스트를 현재 목표로 설정하는 SetObjective 함수를 생성한다. 목표를 초기화하기 위한 Ini..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTv4eI%2FbtrZzmRizJU%2Fc2Yhtwr1qRK9P0CmigK25k%2Fimg.png)
BPI_ObjectiveCall 인터페이스를 L1_GameState에 추가했기 때문에 아래와 같이 사용해야 하는 줄 알았다. 하지만, 캐스팅 없이 그냥 Game State를 가져와 사용해도 정상적으로 작동했다. 인터페이스의 경우 부모 클래스에서 자식이 어떤 인터페이스를 구현하는지 알 수 있는 것인가? 좀 더 공부하고 나서 다시 고민해보자..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE9HiA%2FbtrZxdFVP0y%2F7dWkL7GKa0wb0viSyi7qhk%2Fimg.png)
Hit Component와 Overlapped Component는 자신을 뜻한다. Other Actor와 Other Comp는 상대를 뜻한다. 유니티로 치면 Overlap은 Trigger, Hit은 Collision이라고 할 수 있다. Overlap은 닿은 후 물체를 통과하지만 Hit은 부딪히면 멈춘다. Overlap은 체크 포인트, 트리거 포인트 등에 사용된다. Hit은 수류탄, 포탄 등 부딪힌 것을 명확히 해야할 때 사용한다. 추가로 라인 트레이스는 FHitResult가 필요하지만 물리적인 충돌은 필요치 않을 때 유용하다.