[1. TurnInPlace 기능]

지난번 AimOffset의 연장선으로 Yaw 값이 일정값을 넘어서면 해당하는 방향으로 캐릭터가 회전하도록 하였습니다.

 

 

회전할때 하반신 모션이 좀 어색하긴한데 Mixamo에서 이것보다 괜찮은게 안보여서 해당 모션을 사용했습니다.

아마 추후에 더 괜찮은 모션을 찾게 된다면 수정될 것 같습니다.

 

[2. 사격 기능#1]

 

사격시 총알은 총구에서 플레이어의 화면의 중앙으로 발사되도록 하였습니다.

또한 사격 시 탄피가 생성되고 해당 탄피에서 충돌 이벤트 발생 시 탄피 떨어지는 소리를 한 번 내고 4초 뒤에 사라지도록 하였습니다.

 

처음 사격 방향 계산하는 거에서 참고한 자료에선 트레이스 채널을 ECC_Visibility로 해서 플레이어 캐릭터에 막혀서 반대로 쏘거나 하는 상황이 생겨 ECC_Camera로 변경하였으나 오른쪽으로 이동하면서 사격 시 이전과 같은 문제가 발생해서 이에 대해 수정할 예정입니다.

 

트레이스 채널을 손보거나 사격하는 방향을 찾는 과정 자체를 수정하거나 할 것 같습니다.

[1. 모션 수정]

 

앉기 키 입력 시 버벅대던 것을 TriggerEvent::Completed로 수정하여 해결하였고

SpringArm에 보간을 줘서 카메라가 부드럽게 움직이도록 하였습니다.

 

 

 

또한 각 모션간의 전환을 추가 및 개선하고 모션 별로 MaxWalkSpeed 또는 MaxWalkSpeedCrouched가 변하도록 하였습니다.

 

[2. Aim Offset 추가]

 

Aim Offset을 추가하고 이동 시에는 조준점의 Pitch 값, 정지 시 Pitch 값과 Yaw 값을 이용해 상반신이 조준점을 향하도록 하였습니다.

 

 

현재 멀티플레이 테스트 결과 호스트는 클라이언트의 Pitch와 Yaw를 둘 다 볼 수 있으나 클라이언트는 호스트 또는 타 클라이언트의 Pitch만 볼 수 있는 문제가 있어 다음 포스팅까지 해결하도록 하겠습니다.

[3. FABRIK]

 

Aim Offset에서 왼손이 총기를 제대로 따라가지 못하는 문제가 생겨 총기의 스켈레탈 메시에 왼손을 위치시킬 소켓을 만든 후 Transform을 구해 FABRIK 노드에 전달하는 식으로 해결하였습니다.

 

 

 

[달리기 모션]

 

Enhanced Input을 이용해 왼쪽 Shift 홀드로 달리기와 걷기를 전환하도록 하였습니다.

키를 눌렸을 때와 놓았을 때 간단한 가속/감속 기능 또한 추가해보았습니다.

[Weapon 클래스]

Weapon 클래스를 만들고 해당 클래스와의 상호작용을 추가하였습니다.

또한 무기를 들고 있을 때의 모션을 추가하였습니다.

관련 에셋으로는 언리얼 마켓플레이스의 Military Weapons Silver와 애니메이션 스타터 팩을 사용했습니다.

 

[무기 관련 상호작용]

 

 

 [무기 장착 시 애니메이션]

 

 

애니메이션 몇 개가 좀 어색하기도 하고 앉기 기능에도 조금 문제가 있어 추후 수정할 예정입니다.

[온라인 서브 시스템을 이용한 세션 생성]

 

학습이나 코드 작성은 오래 걸리지 않았으나 생각지도 못한 곳에서 문제가 생겨 시간이 오래 걸렸습니다.

 

일단, 온라인 서브 시스템 스팀이 5.3에서 문제가 생길 수 있다하여 5.2로 다운그레이드 하였습니다.

 

해당 과정에서 언리얼 엔진이 설치 도중 일정 진행도에서 멈추는 문제가 계속 발생하여 이틀 정도 설치 눌러놓고 방치해보기도 하고 에픽 게임즈 재설치도 해보고 포맷도 해보았으나 해결되진 않았고 그러던 중 VPN을 사용하자 정상적으로 다운로드가 진행되었습니다.

추측으로는 집에 있는 컴퓨터는 문제가 없었으나 연구실의 컴퓨터가 전부 그런 이상이 있었던걸 보면 학교 측에서 뭔가 막아둔 것이 아닌가.. 싶기도 합니다.

 

이후 에셋들을 전부 옮기고 다시 패키징 후 테스트하였습니다.

 

 

[노트북을 이용한 테스트]

노트북 성능이 좀? 안좋습니다

 

 

[친구들 불러다가 시킨 테스트]

 

[0. 프로젝트 개요]

일단 4인 협동 TPS를 계획하고 있으며 전과 다르게 에셋을 만들거나 찾는데 시간을 다 쓰지 않도록 무료 에셋을 가져다 쓰기로 하였습니다.

게임도 그래픽적인 완성도보다는 다양한 기능 구현 및 언리얼 학습을 목표로 만들어갈 예정입니다.

 

[1. 캐릭터 이동]

 

강의를 보고 공부할 때는 프로젝트 세팅 > 입력에서 키 바인딩을 했지만 들어갈 때마다 Enhanced Input을 사용하라고 해서 이번 프로젝트에서 입력은 Enhanced Input 를 사용하여 직접 인풋 액션을 바인딩해주었습니다.

 

이동/점프와 마우스를 통한 컨트롤러 회전을 구현하였고 이후 진행 사항에 따라 추가될 계획입니다.

 

 

[2. Foot IK]

 

요즘 사용되지 않는 게임이 적은 기능이라 생각하여 이것저것 찾아서 구현해보았습니다.

 

처음엔 강의를 통해 Foot IK의 원리를 이해하려 하였고 이후엔 c++로 해당 기능을 구현해보았고 추가로 밟고 있는 땅의 각도에 따라 발이 회전하는 기능도 찾게 되어 공부하고 구현해보았습니다.

 

 

 

[2. Perforce실행]

 

 

P4V를 실행 시키면 위와 같은 창이 뜬다.

여기서 New를 눌러 사용자를 만들고 워크스페이스를 생성해주면 된다.

 

 

이후 해당 경로에 프로젝트를 넣어주었다.

 

[3. Perforce에 파일 추가]

 

 

Perforce 소스 컨트롤 사용

팀 내 다른 사람들과의 애셋 공유를 위한 Perforce 구성 방법입니다.

docs.unrealengine.com

추가하려는 파일을 우클릭 후 Mark For Add를 선택해 Change List에 파일을 추가하고 Submit을 하면 된다.

자세한 건 위를 참조

[4. 언리얼 에디터와 연결]

 

에디터 우하단의 리비전 컨트롤을 클릭하면

 

 

이미 연결을 해놔서 조금 다르긴한데 위와 같은 창이 뜬다.

여기서 Perforce를 선택하고 서버,사용자명,워크스페이스를 입력 및 선택하면 된다.

[5. 외부에서 P4V 서버 접근]

 

 

외부 이용자는 해당 창에서 Server에 서버가 설치된 PC의 IP:1666을 입력하면 된다.

IP는 cmd 창에서 ipconfig 입력으로 알 수 있고

만약 공유기 사용 중이라면 IPTIME 기본 설정 페이지에서 관리도구 > 기본 설정 > 시스템 요약 정보에서 외부 IP 주소를 찾아 입력하면 된다. (포트 포워딩이 되어 있어야함)

 

추가로 방화벽 설정도 해주어야하는데

 

 

Windows Defender 방화벽을 통해 앱 또는 기능 허용을 클릭 후

 

 

위 창에서 설정 변경 클릭 후 다른 앱 허용에서

 

 

Perforce 설치 경로의 Server 폴더에서 p4d.exe와 p4s.exe를 추가해주어야한다.

소스 컨트롤 도구 중 깃허브가 베타기도 하고 퍼포스를 한 번 써보고 싶어서 찾아봤는데 정보도 별로 없어서 일단 야매식으로 연결한 것 같다.

스트림 쪽은 아직 시도도 안해봤고 프로젝트를 진행하면서 문제 생기거나 하는거는 그때 가서 임기응변으로 대처해봐야 할 듯 싶다...

이번에는 이것저것 수정해가지고 왔습니다.

 

 

일단 화면 해상도를 고려해서 각 필드의 크기를 늘렸습니다.

그리고 각 필드의 X,Y축 길이가 같지가 않아서 이전의 중심 기준으로 플레이어와의 X,Y 거리를 비교해서 더 멀리있는 축으로 이동시키는 게 안되더라구요.

그래서 플레이어와의 X, Y축 거리를 비율로 계산해서 필드를 이동시키도록 하는 것으로 해결하였습니다.

 

 

위와 같이 플레이어가 너무 멀리 가버리면 몬스터가 저렇게 남겨지는 경우가 발생하기도 해서

 

 

각 필드를 벗어나는 걸 감지하는 저 영역을 기준으로 몬스터들이 저 영역을 벗어날 시 플레이어가 가는 방향으로 재배치해주도록 하였습니다.

 

 

전투 관련 구현 및 변경점으로는 아래와 같습니다.

  • 탄이 플레이어 기준으로 마우스 방향으로 나감(이전까지는 플레이어 기준이 아닌 게임 시작 시 화면의 정중앙 좌표에서 나갔었음)
  • 탄이 벽에 충돌 시 탄 사라짐
  • 적과 탄 충돌 시 서로 사라짐

 

아래는 테스트 영상입니다.

 

스폰되는 몹 수 등 아직 수정해야할 게 많이 보이네요.

 

그럼 다음 포스트에선 마우스 커서를 바꿔보고... 몬스터 스크립트를 좀 수정해서 체력도 만들고

피격 시 데미지가 뜨게 해보겠습니다.

'과제 및 프로젝트 > Unity 2D 슈팅' 카테고리의 다른 글

Unity 2D 슈팅 - 05  (0) 2024.01.12
Unity 2D 슈팅 - 04  (0) 2024.01.10
Unity 2D 슈팅 - 03  (1) 2024.01.08
Unity 2D 슈팅 - 02  (2) 2023.12.27
Unity 2D 슈팅 - 01  (1) 2023.12.27

이전 포스트에서 계획했던 것 중 고민하던 맵 방식은 가는 방향으로 계속해서 맵이 이동하는 방식을 채택하였다.

 

일단 맵을 만들기 전에 이번에도 에셋을 구해왔습니다.

공장 느낌나는 걸로 가져왔다

 

그 다음 심혈?을 기울여 맵을 디자인했습니다.

 

시계 방향으로 필드 1,2,3,4

 

 

우하단 무수한 에러는 테스트한다고 오브젝트 하나를 대충 비활성화해서 그런거니 무시하자...

 

위에서 만든 맵을 플레이어가 절반쯤 이동하면 플레이어 이동 방향의 반대쪽에 있는 맵을 옮겨오도록 했습니다. 

 

 

 

 

전투는 총알이 좀 수정할 게 있어서 다음 포스트에서 구현하도록 하겠습니다.

'과제 및 프로젝트 > Unity 2D 슈팅' 카테고리의 다른 글

Unity 2D 슈팅 - 06  (0) 2024.01.22
Unity 2D 슈팅 - 04  (0) 2024.01.10
Unity 2D 슈팅 - 03  (1) 2024.01.08
Unity 2D 슈팅 - 02  (2) 2023.12.27
Unity 2D 슈팅 - 01  (1) 2023.12.27

+ Recent posts