본문 바로가기
공부/Unreal Engine 5

[언리얼5] 동적 크로스 헤어

by MY블로그 2024. 3. 6.

사격하기위한 위치를 표시하는 CrossHair를 HUD를 통하여 화면에 그린다.

이때 플레이어의 다양한 움직임의 조건에 의하여 화면에 그려지는 크로스헤어는 벌어지거나 화면의 중심으로 모이는 움직임을 구현.

 

게임모드에 사용될 HUD 클래스를 생성 이때 크로스헤어는 동적으로(벌어지는 모션)움직여야 하기때문에 한장의 텍스처가아닌 크로스헤어의 중심, 상, 하, 좌, 우 5개의 변수로 나누고 텍스처를 적용 한다.

HUD 클래스에 구조체를 만들어 각각 Center, Left, Right, Top, Bottom 멤버 변수로 생성

HUD 클래스 헤더

HUD 클래스는 Tick이아닌 DrawHUD를 통하여 매프레임 화면에 텍스처를 그린다.

 

화면에 텍스처를 그릴때에 주의해야할 점은 텍스처의 좌표체계는 UV 좌측상단이 0,0 우측하단이 1,1의 좌표를 가지게 되므로 화면상에 정확히 중심점을 기준으로 그리기 위해서는 추가적인 계산을 해야 한다.

 

화면상에 텍스처를 그릴때 가장 먼저 구해야 할것은 화면의 사이즈이며 중심이 필요할 경우 중심의 위치도 저장하고 사용한다.

HUD클래스 CPP

텍스처를 정확히 중심에 그릴때 텍스처의 크기와 위치를 바로 잡아주는 계산도 필요하다.

HUD클래스 CPP

크로스헤어의 벌어짐에 관한 변수의 값은 매프레임 업데이트 되므로 적절한 함수 내에서 필요한 값들을 설정

현재 프로젝트에서는 캐릭터가가지고 있는 컴포넌트에서 캐릭터의 행동과 관련된 변수들을 관리 하고 있기때문에 해당 클래스에서 계산을 실행하고 값을 전달 하는 방식으로 업데이트.

 

플레이어의 행동과 관련된 변수들과 조건문을 사용하고 FMath::FInterpTo() 함수를 사용하여 이전의 값과 현재의 값을 보간시켜 동적으로 값이 변경 되도록 사용.

 

 

 

댓글