[unrealengine4]

2023-07-03 언리얼(시야각(FOV), TImeLine)

롤링페이퍼 2023. 7. 4. 04:58
죽은 캐릭터에 FIreBall 충돌 처리 제거

 

BP_Charcater의 AnyDamage에서

Generate Overlap Events가 False이후 Can Be Damaged도 False로 되도록 추가한다.

Can Be Damaged : 피해를 받을 수 있는지 확인해 주는 변수 값

BP_Charcater의 AnyDamage

 


Zoom 구현하기 전 알아야 할 것

SpringArm과 Camera에 접근해야 하는데 BP_PlayerController로 형변환 해서 Camera Manager로 접근하는 방식은 접근은 가능하나 수치 변경도 불가능하고 SpringArm에도 접근하지 못해서 사용할 수 없다.

Get Component by Class는 접근이 가능해서 사용 가능하지만 Skill에서 Player의 컴포넌트에 접근하는 것은 바람직하지 않고, 활 같은 무기에 Zoom기능이 필요하면 그때 또 만들어야 하기에 SpringArm과 Camera를 들고 있는 BP_Player에서 인터페이스를 이용한다.


 

Camera ZoomIn, ZoomOut 구현하기

 

BP_CharacterInterface에 ZoomIn, ZoomOut 추가

FireBall 스킬 준비 자세에서 마우스 우 클릭 시 zoomIn, 땔 시 ZoomOut으로 구현해 보자.

 

캐릭터가 FireBall 상태에서 동작을 해야 하기 때문에 BP_Character에서 begin / end Action B 이벤트를 구현하도록 한다.

begin / end Action B 이벤트를 추가해 is skill Activated를 통해 스킬이 활성화 중인지 확인을 하며 true일시 skill Now에 들어있는 스킬을 Begin / End action B로 호출할 수 있도록 한다.

BP_Character  이벤트그래프
BP_FireBall의 이벤트 그래프


TImeLine

 

TImeLine node(타임라인 노드)  : 시간에 따라 애니메이션과 상호작용을 제어하는 노드이다.

타임라인 노드는 시간 축을 나타내는 그래프로 구성되며, 애니메이션, 이펙트, 사운드 등을 일련의 이벤트로 조정할 수 있다.

 

Play : 현재시간에서 정방향 재생

Play from Start : 타임라인 처음부터 정방향 재생

Stop : 타임라인 현재 시간에서 재생 멈춤

Reverse : 타임라인 현재 시간에서 역재생

Reverse from End : 타임라인 끝에서부터 역재생

Set New Time : 현재시간을 New Time에 입력한 값으로 설정

 

Update : 타임라인이 호출되자마자 실행 신호 출력

Finished : 재생이 끝날 때 실행 신호 출력. Stop함수로는 발동 안됨

Direction : 정재생인지 역재생인지를 나타내는 Enum데이터

 

타임라인을 더블 클릭하면 타임라인 에디터가 열리는데 트랙이 여러 개 있다. Float : 변수 1개, Vector : 3개, Color : 4개

길이를 0.25로 설정하고 0초일 때의 값, 0.25초일 때의 값을 설정하면 타임라인의 시간이 지나갈 때마다 변숫값을 출력한다.

Update로 출력하면 값이 Tick처럼 부드럽게 이어지기 때문에 카메라의 움직임이 자연스럽게 보간 된다.


 

BP_Character에 TimeLine을 이용해 Zoom을 구현해 보자.

 

1. TargetArmLength : 길이 0.25 / 시간 0, 값 300 -> 시간 0.25, 값 150으로 설정

2. SocketOffset  : 길이 0.25

Y축 - 시간 0, 값 0 -> 시간 0.25, 값 75로 설정
Z 축 - 시간 0, 값 100 -> 시간 0.25, 값 75로 설정

3. FieldOfView : 길이 0.25 / 시간 0, 값 90 -> 시간 0.25, 값 80으로 설정

 

Skill인 FireBall에서 호출된 Zoom In/Out이 TimeLine을 통해 나온 FOV값, SpringArm Length값, Socket Offset값으로 세팅된다.

BP_Player의 이벤트 그래프


FOV(Field Of View)

 

 

FOV(Field Of View) : 카메라의 시야 범위(시야각)를 나타내는 속성이다.

 

시야각은 카메라에서 보이는 영역의 너비를 나타내며, 일반적으로 각도로 표현된다.

0˚는 매우 좁은 시야를 말하며 플레이어가 정면에서만 볼 수 있는 상태이다.

180˚는 전체 시야를 말하며 플레이어가 주변의 거의 모든 것을 볼 수 있는 상태이다.

 

공식 계산 방식은 "FOV ((H) or (V)) = Sensor Size((H) or (V)) ÷ 렌즈 배율" (가로는 가로끼리, 세로는 세로끼리)이며

 

간단하게 말하자면

SpringArm의 길이, SpringArm의 Socket Offset 수치, FOV수치를 변경하면 된다.