관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

Line Trace로 레이 발사해보기 본문

게임 개발 공부/언리얼 엔진

Line Trace로 레이 발사해보기

huenuri 2024. 8. 25. 14:50

이제 상호작용을 하며 물체에서 레이저가 발사되는 기능을 추가해 보기로 하자. 지난번에 문을 만들다 말았는데 그전에 레이저가 나오는 Lind Trace에 대해서 알아보기로 했다.

라인 트레이스에 관한 자료들이 좀 많아서 링크에 걸어두었다. 지금은 다 보기에는 시간이 없고, 바로 적용할 수 있는 블로그 위주로 보고 학습하는 중이다.

 


 

 

 

Lind Trace

 

레이캐스트와 라인 트레이스는 왜 필요할까?

 

게임에서 플레이어 캐릭터가 무언가를 바라보고 있는지 확인하여 그런 경우 게임을 어떤 상태로 변경하고자 하는 경우가 있다. 아니면 적이 플레이어 캐릭터를 볼 수 있는지 확인하여 그런 경우 어떤 식으로든 발사 또는 교전을 시작시켰으면 하는 경우도 있다.

이 두 가지 모두 Raycast 또는 Trace를 통해 보이지 않는 광선을 "발사"하여 두 점 사이에 걸리는 지오메트리가 있는지 확인하고, 걸리는 지오메트리가 있으면 어떤 작업을 할 수 있도록 걸린 것을 반환한다.

트레이스 실행시 사용할 수 있는 옵션은 여러 가지 있다. 트레이스를 실행하여 오브젝트와 콜리전 검사를 한 뒤 히트한 오브젝트를 반환하거나, Trace Channel로 트레이스를 실행하여 특정 트레이스 채널에 반응하도록 지정된 오브젝트의 경우에만 히트 정보를 반환하도록 할 수도 있다.

레이캐스트는 유니티에서도 자주 사용했던 기능이었다. 그러니까 특정 대상을 향해 레이를 발사한다고 보면 될 것 같다. 레이를 발사하는 이유는 그렇지 않으면 그 대상이 존재하는지 잘 모르기 때문이다.


 

 

Line Trace 만들기

 

입력 키를 누를 때

난 총 쏘는 애니메이션을 아직 만들지 못해서 특정 키를 눌렀을 때 레이가 나오는 것으로 만들어보았다.
E 키를 누르면 이렇게 빨간색 선이 나온다.

 

 

 

 

Event graph

 

총을 쏘는 것과 칼을 휘두르는 입력 키가 다르지 않은 것 같아 칼을 휘두를 때도 레이가 나오게 할 수 있을 것 같았다.


 

 

좌클릭을 할 때

 

 

 

Event graph

 

이렇게 칼을 휘두르는 지점에서 레이가 발사되는 것을 알 수 있었다.


 

 

 

작업을 마치고

지난번에는 한 포스트에 가능한한 많은 내용을 한 번에 담으려고 노력했던 것 같다. 2시간 이상 작업해야 할 분량을 담다 보니 너무 힘들어서 정리하는 일이 귀찮게 느껴졌다.

하지만 지금은 내가 소화할 수 있는만큼 조금씩 잘라서 기록해 보니 언리얼을 배우는 것도 재미있어지고 있다. 어제 언리얼 외국 동영상을 몇 개 시청했는데 잘 이해하지는 못했어도 알고 보면 별로 어렵지 않다는 생각을 했다. 계속 같은 동작들이 반복되고 자주 사용하는 것 위주로 하나씩 익히다 보면 손에 익고 금세 잘 따라 할 수 있을 것 같다.

 

외국인들이 프로그램을 잘 다루는 건 그들이 능력이 출충해서가 아니다. 프로그램 툴이 자신의 모국어로 되어 있기에 우리보다 익숙한 것뿐이었다. 영어를 잘 못하기에 언리얼이 프로그래밍보다 훨씬 어렵게 느껴졌다는 걸 알게 되었다. 이 부분만 극복하면 언리얼을 다루는 일도 별로 어렵지 않을 것이다.