언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

비전 파편 스킬 - 2) 파편을 소환하는 위치 계산

monstro 2025. 12. 6. 23:18
728x90
반응형

- 개요

비전 파편을 소환하는 소환진을 구현하였으므로 이어서 파편을 소환하는 위치를 계산하는 동작을 구현한다

 

- C++ 사이드

1) PointCollection 클래스

 

PointCollection 클래스를 사용하여 파편이 소환될 위치들을 지정한다

11개의 파편을 생성하고 생성한 파편들의 위치들은 ImmutablePts 멤버변수에 저장하도록 구성한다

 

 

생성자는 위와 같이 구성한다

0번째 파편의 위치원점이므로 RootComponent로 설정하고

1번째부터 10번째 파편의 위치는 매크로를 사용하여 RootComponent에 Attach하는 방식으로 생성한다

 

 

GetGroundPoints 함수의 로직은 위와 같다

ImmutablePts 멤버변수를 순회하면서 파편을 생성할 위치를 의미하는 SceneComponent에 대해 다음의 설정을 진행한다

  • 원점이 아니라면 원점을 기준으로 상대적인 위치를 계산하고 수평 회전을 적용한다
  • 순회중인 SceneComponent로부터 지면으로 LineTrace를 수행하여 파편을 생성할 위치를 지면에 밀착시킨다
  • 이후 지면의 경사를 따라서 회전값을 설정한다

 

위와 같이 설정이 완료된 SceneComponent지역 컨테이너에 저장하고

순회가 끝난후에 해당 컨테이너를 반환한다 

 

 

BeginPlay 함수는 위와 같이 구성하여 부모 함수를 호출한다

 

- 블루프린트 사이드

1) BP_PointCollection 블루프린트

 

위와 같이 11개의 SceneComponent와 짝지어진 BillboardComponent로 구성된 블루프린트를 생성한다

BillboardComponent를 통해 시각적으로 SceneComponent가 보여지도록 구성하였다

 

2) GA_AracaneShards 블루프린트

ActivateAbility 이벤트의 두번째 시퀀스 수정

 

ActivateAbility 이벤트의 두번째 시퀀스를 위와 같이 수정하여

입력이 이루어지기까지 대기하는 노드와 파편 소환진을 숨기는 노드 사이에 새로운 로직을 추가한다

  • 마우스 커서로 클릭한 위치를 비전 파편을 소환하는 위치의 원점으로 지정 + PointCollection 변수로 저장
  • 지정한 원점을 기준으로 GetGroundPoints 함수를 호출 + 결과값을 GroundPoints 변수로 저장
  • GroundPoints를 순회하면서 Debug Sphere 생성

 

- 최종 실행 결과

 

728x90
반응형