본문 바로가기
프로그래밍/게임 개발

게임 개발 「 추천 편」레거시 → 신규 입력 시스템: 플레이어 이동

by grapedoukan 2024. 1. 18.
728x90

레거시 입력 시스템을 사용하는 일부 코드를 새 입력 시스템으로 교체하는 임무를 맡았습니다.

가장 먼저 한 일은 Player Manager 게임 오브젝트를 생성하고 Player 게임 오브젝트를 자식으로 드래그하는 것이었습니다.

다음으로 키보드와 게임패드를 사용하여 이동 회전을 위한 입력 액션을 만들겠습니다.

3D 공간을 사용하고 있으므로 이동 Vector3를 사용하겠습니다. 그런 다음 Up/Down/Left/Right/Forward/Backward 사전 설정을 사용하여 바인딩을 만들고 이를 위해 다른 입력을 사용할 것이므로 왼쪽, 오른쪽 위 및 아래를 제거하기만 하면 됩니다.

그런 다음 회전의 경우 Axis 값을 사용하여 1D 축 바인딩을 얻었습니다. 방향을 반전시키려면 프로세서를 사용하여 "반전" 옵션을 선택할 수 있습니다.

C# 클래스를 저장하고 생성해야 합니다.

이제 Player Manager 스크립트를 생성하여 Player Manager 게임 오브젝트로 드래그할 수 있습니다.

가장 먼저 할 일은 우리가 만든 PlayerInputActions  새 인스턴스를 만든 다음 활성화하는 것입니다. 계속해서 메서드를 만들고 Start에서 호출하여 이 작업을 더 깔끔하게 만들었습니다.

입력을 제어하는 플레이어 매니저

움직임 회전의 실제 기능을 플레이어 매니저 안에서 만드는 것은 이치에 맞지 않는다고 생각하는데, 이는 입력만 담당하기 때문입니다. 따라서 ReadValue 함수를 만든 다음 플레이어 스크립트를 호출합니다.

플레이어 매니저

이것은 입력에 의해 주어진 값을 읽고 함수에 적용합니다.

이제 Player 스크립트와 통신하여 이러한 값을 함수로 전달할 수 있습니다.

플레이어 클래스에 대한 참조를 얻으려고 할 때 가장 먼저 알아차린 것은 할 수 없다는 것입니다. 그것은 단순히 존재하지 않았습니다. 몇 가지 조사를 한 후 Player 클래스가 네임 스페이스를 사용하고 있다는 것을 알았습니다.

네임스페이스 Game.Scripts.Player

즉, Player Manager 스크립트 내에서 이 네임스페이스를 사용해야 합니다.

이제 플레이어에 대한 참조를 얻을 수 있습니다.

이제 플레이어와 통신할 수 있으므로 플레이어 스크립트 내에서 기능을 만들어 보겠습니다. Player Manager 스크립트 내에서 전달할 수 있도록 Vector3 매개 변수를 사용하여 메서드를 만들겠습니다.

이제 함수 파라미터가 생겼으니 Player Manager 메서드 내에서 간단히 호출할 수 있습니다.

입력 값을 읽는 이 "move" 변수는 이제 저장되고 Player Move 메서드 내의 "movement" 파라미터로 전달됩니다.

Rotate 기능으로 동일한 작업을 수행했습니다. Player 클래스 내에서 메서드를 만들었습니다.

그리고 Player 스크립트를 호출할 때 rotate 변수를 파라미터에 전달하기만 하면 됩니다.

애니메이션과 같은 레거시 스크립트에서 여기에 몇 가지 추가 사항이있었습니다.

다음은 이전 입력 시스템을 사용하는 레거시 스크립트입니다.

배우

다음은 새로운 입력 시스템 스크립트입니다.

이제 새로운 입력 시스템을 사용하여 플레이어를 움직일 수 있습니다!

728x90