[unrealengine4]

2023-07-04 언리얼(Zoom, CrossHair)

롤링페이퍼 2023. 7. 4. 23:11
ZoomIn 상태에서 캐릭터가 화면 밖으로 나가는 문제

 

zoonTimeLine에서 Float 트랙 인 CaneraLagSpeed를 추가해

길이 : 0시간 : 0 / 길이 : 0.25 시간 : 25로 지정 

 

Camera Arm에서 set Camera Lag Speed를 추가해 TimeLin과 연결해 준다.


ZoomIn 상태에서 다른 스킬을 사용 시 ZoomIn이 풀리지 않는 문제

 

BP_FireBall의 이벤트 그래프의 Deactivate이벤트 호출 시 ZoomOut도 같이 호출해 해결한다.


CrossHair 만들기

 

 

 

뷰옵션 - 엔진콘텐츠에서 원하는 이미지를 찾아온다.

위젯 블루프린트를 생성해 준다.

팔레트의 이미지를 Canvas panel로 넣어준다.

Canvas panel : 플레이 시 화면에 보이게 될 화면 크기를 말한다.

디테일도 지정해 주자

Alignment를 0.5 / 0.5로 지정하면 정중앙으로 지정될 것이며

Size To Content를 true 설정하면 X, Y크기가 서로 동일해진다.

Appearance의 brush에서 Image를 지정할 수 있다.


시작하기 전 BP_PlayerControllerInterface 인터페이스를 생성 후 아래 두 함수를 추가한다.

플레이 시작 시 바로 CrossHair를 생성하고 이것을 FireBall 활성화 이후 마우스 우클릭으로 zoomin, out을 할 것이기에 BeginPlay이벤트에서 생성하도록 한다.

 

BP_PlayerController의 이벤트 그래프

 

WBP Cross Hair 위젯 생성 후 class는 아까 만들어 두었던 WBP_CrossHair 인터페이스를 지정하고 OwingPlayer는 나 자신이기에 self를 지정해 둔다.

이후 위젯의 return value를 변수로 승격해 CrossHair로 지정해 두고 이 변수를 Add to Viewport로 화면 추가까지 해준다.

ZOrder : UI 간의 우선순위를 말하며 수치가 클수록 화면의 상단에 위치하도록 된다.

 

Show Cross Hair, Hide Cross hair 이벤트를 호출하게 될 시 Set Visibility로 위젯을 켜고 끌 수 있게 한다.

클릭 시 show이벤트를 호출, 클릭 해제 시 Hide이벤트를 호출하기 때문에

show이벤트 호출 시 Visibility는 Not Hit - Testable, Hide이벤트 호출 시 Visibility는 Collapsed로 지정하도록 한다.

- Visible : 기본으로 보이게 되며, 히트 테스트와 커서랑 상호작용이 가능하다.

- Collapsed : 기본으로 보이지 않으면서 레이아웃에서 공간을 차지하지 않아 상호작용 불가능하다

- Hidden : 기본으로 보이진 않지만 레이아웃 공간은 차지한다. 하지만 숨겨져 있으므로 인터렉션은 일어나지 않는다.

- Not Hit-Testable(Self & All Children) : 기본으로 보이지만 상호작용이 불가능하며 자신과 자식들 모두 포함된다.

- Not Hit-Testable(Self Only) : 기본으로 보이지만 상호작용 불가능하며 자신만 포함된다.

 

BP_Player의 이벤트 그래프에서 Direction에 switch를 추가 후 Finished에 연결해 준다.

이후 로직이 BP_Player로 돌아와 zoomin / out시 TimeLine의 Direction값을 통해 Controller의 show cross hair를 불어오게 한다.