툴/유니티

유니티 플레이스테이션5 듀얼센스 컨트롤러 맵핑(Unity PS5 Dualsense Controller Mapping)

스튜디오 오버그래픽스 2022. 9. 21. 00:11

PS5 컨트롤러를 C to USB로 PC에 연결

(무선으로 할경우 가운데 PS검정 버튼과 좌측 상단에 방향키 위 작은 버튼을 3초간 누르고 있으면 파란불 깜빡깜빡 거리면서 블루투스 연결 가능 상태가됌)

 

 

 

*테스트 진행한 유니티 버전은 2021.3.4f1

 

 

 

 

1인칭 플레이어를 위 컨트롤러로 맵핑 해보자.

https://assetstore.unity.com/packages/tools/input-management/mini-first-person-controller-174710

 

Mini First Person Controller | 입출력 관리 | Unity Asset Store

Get the Mini First Person Controller package from Simon Pasi and speed up your game development process. Find this & other 입출력 관리 options on the Unity Asset Store.

assetstore.unity.com

1인칭 플레이어 에셋을 다운로드 받아서 프로젝트에 임포트 해주고

 

 

First Person Controller Minimal을 씬에 넣고 플레이 해보면

키보드 wasd,방향키 에 따라서 잘 움직이고

마우스에 따라서 플레이어 시점이 X,Y축으로잘 움직인다.

 

 

 

 

FirstPersonMovement.cs 스크립트를 열어보면

 // Get targetVelocity from input.
        Vector2 targetVelocity =new Vector2( Input.GetAxis("Horizontal") * targetMovingSpeed, Input.GetAxis("Vertical") * targetMovingSpeed);

Input.GetAxis를 통해

"Horizontal""Vertical"값을 가져와서 플레이어가 움직인다.

 

 

FirstPersonLook.cs 스크립트를 열어보면

Vector2 mouseDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y"));

Input.GetAxisRaw를 통해

"Mouse X""Mouse Y"값을 가져와서 플레이어의 시야가 움직인다.

 


"Horizontal", "Vertical", "Mouse X", "Mouse Y"값은 어디서 어떻게 설정이 되어 있는가

 

 

Edit - Project Setting - Input manager로 간다

그러면 기본 18개의 값이 있다

여기에 "Horizontal", "Vertical", "Mouse X", "Mouse Y" 이 있다.

 

 

맨위에 있는 Horizontal과 Vertical 항목을 펼쳐보면

Horizontal에 left,right,a,d키가 지정되어 있고 Type은 'Key or Mouse Button'으로 지정 되어 있다

키보드 화살표 좌우, 키보드 'a' 'd'키를 누르면 Horizontal값에 입력을 주는 셋팅이다.

마찬가지로,

Vertical에 down,up,s,w키가 지정되어 있고 Type은 'Key or Mouse Button'으로 지정 되어 있다

키보드 화살표 상하, 키보드 'w' 's'키를 누르면 Horizontal값에 입력을 주는 셋팅이다.

 

밑에도 똑같이 'Horizontal'과 'Vertical' 항목이 하나더 있는데 셋팅은 조금 다르다

Type이 Joystick Axis로 되어 있고

Axis는 각각 'X axis'와 'Y axis'로 되어있다.

 

그래서 컨트롤러의 좌측 스틱을 움직여보면 플레이어가 상하좌우 잘 움직인다.

(X axis와 Y axis는 좌측 스틱에 해당되는 맵핑값이다)

*만약 Horizontal과 Vertical항목이 없거나 위와 다르다면 항목을 추가하든지 위처럼 만들어주면 작동함

 

 

 

 

그러면 이제 "Mouse X"와 "Mouse Y'값을 컨트롤러 우측 스틱을 사용해서 맵핑을 해보자.

'Mouse X', 'Mouse Y'항목을 열어보면

Type이 Mouse Movement로 되어있다. 그래서 마우스로 플레이어의 시야 제어가 가능했다.

이제 이거를 컨트롤러 우측 스틱으로 변경해보자.

 

 

 

 

그러려면 PS5 컨트롤러 듀얼센스의 키값을 알아야한다.

https://ritchielozada.com/2016/11/21/playstation-4-dual-shock-controller-input-mapping-with-unity-on-windows-10/

 

PlayStation 4 Dual Shock Controller Input Mapping with Unity on Windows 10

I finally got around to setting up my Sony PlayStation 4 Pro and I find the DualShock 4 (DS4) interesting as an alternate controller so I plugged it via USB cable to my Windows 10 workstation to ch…

ritchielozada.com

키값이 정리되어 있는 사이트(정확한지는 잘 모르겠다)

여기서 확인해보면

좌측 스틱은 "X Axis","Y Axis" 키값으로 지정되어 있고,

우측 스틱은 "3rd Axis", "6th Axis"키값으로 지정되어 있으며

각각 ((-1) ~ 1) 혹은 ( 1~ (-1)) 의 범위를 가진다

이제 "Mouse X", "Mouse Y"의 셋팅 값을 바꿔보자

Type은 Joystick Axis로 변경하고

각각 '3rd axis', '6th axis'로 설정한다

"Mouse Y"의 경우 시야가 반대로 움직여서 Invert를 체크했음

 

 

정상적으로 셋팅이 됐으면

좌측 스틱으로 플레이어가 이동하고

우측 스틱으로 플레이어의 시야를 움직일수 있다.