군침이 싹 도는 코딩

Unreal engine 5 캐릭터 크기별 카메라 맞추기 본문

Unreal Engine 5

Unreal engine 5 캐릭터 크기별 카메라 맞추기

mugoori 2023. 12. 11. 16:01

# 게임을 만들다보면 캐릭터가 모두 동일한 크기가 아닐것이다

그렇다면 각 캐릭터별로 카메라의 위치를 변경해줘야한다

가장 간단한 방법으로는 각 캐릭터별로 스프링암과 카메라를 달고 위치를 조절해주는것이다

그러나 이 방법은 캐릭터가 적을땐 괜찮지만 많아지면 해당 작업을 많이 반복해야되기 때문에 번거롭다

반복작업을 최소화 하기 위해 캐릭터에 Possess 했을때 스프링암과 카메라를 만들어주는 노드를 작성하면 된다

 

# 이것이 전체 노드이다

 

# 이 블루 프린트 작업은 Player Controller 를 상속받는 클래스에서 해야한다

자신의 프로젝트에서 사용하는 디폴트 컨트롤러에다가 구현을 하면 된다

먼저 On Possess 이벤트를 만들고 Possess 할 캐릭터의 클래스를 Cast To 노드로 캐스팅한다

그리고 그 값을 변수로 저장하고 시퀀스를 만들어준다

해당 프로젝트에서는 1,3인칭 스위칭을 위해 스프링암 두개를 만들고 카메라를 하나 만들어주었다

Add Spring Arm Component , Add Camera Component 를 연결하고 타겟은 저장한 변수를 넣어준다

그리고 해당 노드들의 벨류값을 모두 변수로 저장한다 ( Spring Arm 1, Spring Arm 2 , Camera )

 

# 스프링암 쪽에 Set Use Pawn Control Rotation 을 트루로 연결해주고 Set Target Arm Length의 값을 적절하게 설정한다

카메라는 기본으로 사용할 1 또는 3인칭 스프링암에 Attach Component To Component 노드를 사용해 붙여준다

여기서는 3인칭을 기본으로 사용하므로 3인칭 스프링암에 붙여주었다

 

 

# 1인칭 스프링암쪽으로가서 동일하게 Set Use Pawn Control Rotation 을 트루로 연결해주고 Set Target Arm Length 의 값을 바꿔주면 되는데 이때 모든 캐릭터마다 크기가 다르기 때문에 이것을 한번에 바꿔주기위해서 Arrow Component 를 하나 추가한다

 

# 각 캐릭터들이 상속받는 클래스에 Arrow를 추가하고 적절한 위치해 배치한다

 

# 캐스팅 한 캐릭터 액터를 불러오고 그 안에 Arrow 를 불러온다음 get relative location 노드를 통해서

화살표의 위치값을 불러준다 그리고 X 에는 Multiply 노드를 써 -1을 곱해준다 이것을 Set Target Arm Length에 연결

마지막으로 Set Socket Offest 노드에 Y, Z 값을 연결하고 타겟에 스프링암을 연결해주면 된다.

 

# 이렇게 캐릭터 크기가 달라도 1인칭 3인칭이 어색하지 않게 카메라 전환이 되는것을 볼 수 있다