개요
Multiplay RPG 전투에서의 타게팅 시스템을 만들어보고자 했다. 내용은 아래와 같다.
- Q를 눌러 정면에 있는 액터를 타게팅한다.
- 타게팅한 액터를 캐릭터와 카메라가 바라보도록 설정하거나 카메라만 타게팅한 액터를 바라보게 설정할 수 있다.
이를 관리하는 액터 컴포넌트를 제작했으며 이를 앞으로 Targeting Component라 부른다.
개발 내용


- Q를 눌렀을 때, 호출되는 HardLockTargeting() 함수이다.
- 이미 타게팅을 하고 있는 경우, 타게팅을 비활성화하며 Tick() 함수 호출을 중지한다. 이때, 타게팅 중에 캐릭터가 타게팅한 액터를 바라보게 하는 옵션이 켜져있을 경우 Server RPC로 타게팅이 종료됨을 알리고 캐릭터가 컨트롤러의 Yaw 회전을 따라가지 않도록 설정한다. LookInput도 정상적으로 입력이 되도록 설정해준다.
- 타게팅을 하고 있지 않은 경우 타게팅할 액터를 찾은 후 Tick() 함수 호출을 시작해 타게팅을 시작한다. 이때, 타게팅 중에 캐릭터가 타게팅한 액터를 바라보게 하는 옵션이 켜져있을 경우 Server RPC로 타게팅이 시작됨을 알리고 캐릭터가 컨트롤러의 Yaw 회전을 따라가지 않도록 설정해 캐릭터가 타게팅한 액터를 바라보게 한다. 플레이어의 LookInput으로 인해 카메라가 회전하지 않도록 설정한다.


- 타게팅할 액터를 찾는 SearchTargetingActor() 함수이다. GetPlayerViewPoint()를 이용해 카메라의 위치와 회전을 가져오고 캐릭터의 위치에서 카메라의 정면 벡터 방향으로 충돌을 확인한다.
- 충돌한 액터를 TargetActor로 설정한다.
- 옵션이 설정되어 있으면 디버그 캡슐을 그린다.

- 클라이언트에서 서버에 타게팅 여부에 대해 RPC로 알리면 다른 클라이언트의 화면에서도 캐릭터가 타게팅한 액터를 바라보도록 캐릭터의 옵션을 설정한다.

- Tick()에서 타게팅하고 있는 액터가 유효하지 않으면 타게팅을 종료하고 관련 변수를 설정한다.
- 타게팅하고 있는 액터가 유효하면 캐릭터의 카메라가 타게팅하고 있는 액터를 바라보도록 컨트롤러 회전을 설정한다.
개발 결과
'Unreal Engine 프로젝트 > 개인 공부 프로젝트(RPG 전투, Multiplay, AI)' 카테고리의 다른 글
| Multiplay RPG 전투 개발 - Soft Lock 시스템 (0) | 2024.10.16 |
|---|---|
| Multiplay RPG 전투 개발 - Combat Component(대미지 리액션) (0) | 2024.10.16 |
| Multiplay RPG 전투 개발 - Combat Component(공격 판정) (0) | 2024.10.16 |
| Multiplay RPG 전투 개발 - Combat Component(회피 동작) (0) | 2024.10.16 |
| Multiplay RPG 전투 개발 - Combat Component(콤보 공격) (0) | 2024.10.16 |