본문 바로가기
UE5 : Paper 2D (Blueprint)/이동과 전투

[UE5 : Paper2D(BP) - 이동과 전투] Chapter 02. Character Movement

by song.ift 2024. 1. 4.

GitHub : https://github.com/developeSHG/UE5-Paper2D/commit/64769c11533b2224903b983636bf2bc54423cfb9

 

Character Movement · developeSHG/UE5-Paper2D@64769c1

hokyung.song committed Jan 4, 2024

github.com

 

 

 


 

 

저번 글에 이어 Character Movement 컴포넌트를 통해 똑같은 동작을 시켜볼 것이다.

 

언리얼 엔진을 공부할 때, 느낀 점이 구조가 타이트하게 잡혀있는 것이 단점이자 장점이라고 생각한다. 단점은 자유도가 낮으니까 익힐 때, 굉장히 골치아프고 힘들다는 게 단점이고, 장점은 그래도 언리얼 엔진의 구조를 보면서 거꾸로 이런 구조를 잡는것에 대해서 노하우를 얻을 수가 있다는 것이 장점이라고 본다.

 

언리얼 엔진이 굉장히 오랫동안 게임을 만든 그 노하우들을 어떻게 보면 구조화한것이라 볼 수 있는데,  

그러면 이동과 관련된 기능들을 왜 굳이 이렇게 컴포넌트로 빼서 관리를 하고 있는 것일까?

 

보통 처음에 초보들이 코딩을 배워서 포폴을 만들 때 보면, 이렇게 업데이트 코드에서 뭔가 키보드를 누르면 그것에 따라 이동하는 코드를 막바로 넣어놓는 경우가 많다. 그리고 그게 직관적이니까 나쁜 방법은 아니다.

하지만 이렇게 만들면 나중에 조금 애매해질 수 있는 상황이 게임이 점점 복잡해진다고 가정해보면, 굉장히 다양한 상황에서 처리가 힘들고 유연성과 확장성에서 힘들다.

 

그렇기 떄문에 컴포넌트를 만들어서 부훔화해서 만들면 여기다 이동과 관련된 코드를 통일화할 수 있고, 만약에 다른 방식으로 동작을 해야한다고 하면 movement 컴포넌트를 통으로 교체해서 다른 방식으로 동작하는 것으로 하면 완전히 행동 방식을 바꿀 수 있다는 장점이 생긴다. 

그래서 이렇게 컴포넌트로 만들어서 붙이는 것이 꼭 이동뿐만이 아니라 AI나 컨트롤러 등 굉장히 다양한 상황에서 기능별로 하나의 부품을 만들어 뺐다 꼈다 하는 방식으로 동작을 하게 되면 굉장히 편리하게 코드를 관리할 수 있게 된다.

 

일부만 캡쳐해왔지만 보다시피, Character Movement엔 다양한 상황들이 있다. 온갖 상황들에 대한 코드들과 값들이 다 설정이 되어있다. 

 

Add Input Vector는

월드 스페이스에서 우리가 추가하고 싶은 입력을 벡터로 넣어준다. 그 벡터는 대체적으로 0~1 사이의 크기를 갖는다. 그 다음 이리저리 Input Vector를 추가해주는게 한 프레임동안 합산이 되어서 합산된 결과가 최종적인 가속도에 영향을 준다.

 

위 아래 이동을 위해서 Character Movement의 Default Land Mode를 Flying으로 세팅하고, 가속도 연산이 되어 밀리는 현상을 없애기 위해 Max Acceleration와 Breaking Deceleration에 값을 넣었다.

 

코드를 통해 구현하는 것보다, 만들어진 기능으로 이동을 구현해봤는데 물론 위와 같은 기능과 수치들이 무엇을 의미하는 지도 알아야 된다는 점이 있다. 그럼에도 일일이 코드로 구현하는 것보단 만들어져있는 기능을 사용할 수 있다는 건 굉장히 큰 자산이 될 수도 있다.

댓글