본문 바로가기

프로그래밍/Unity

[Unity] SteamVR 액션 설정


default 액션에 없는 menu 버튼을 추가해보자




Actions 에 MenuButton 이라는 액션을 하나 만든다.

타입은 boolean


오른쪽아래 Open binding UI 를 누르면 현재 실행 중인 SteamVR 에 활성화된 장치가 표시된다.


이중에 컨트롤러를 선택 하면 아래 화면이 표시된다.




메뉴 버튼의 + 아이콘을 선택해 버튼을 추가한다.



아래처럼 버튼이 추가되고, click 시 연결할 액션을 선택하기 위해 none 을 선택한다.





등록했던 액션명이 보인다. 선택~





메뉴 버튼에 해당 액션이 연결되었다.



하단 메인메뉴 중 Input Debugger에서 신규로 등록된 항목들이 표시됨과 각 버튼 테스트가 가능.




using Valve.VR;


public class MenuInput : MonoBehaviour

{

// 해당 액션을 변수로 지정하고, 기본값은 default 의 MenuButton으로 지정

// 각 타입은 SteamVR/Input/ 폴더내 스크립트 참조.

[SteamVR_DefaultAction("MenuButton", "default")]

public SteamVR_Action_Boolean menuAction;



// 트랙패드 같이 벡터값이 필요한 경우

[StreamVR_DefaultAction("TouchPadTouch","default")]

public SteamVR_Action_Vector2 touchPadAction;




// Update is called once per frame

void Update () 

{

bool menuFlag = menuAction.GetStateDown(SteamVR_Input_Sources.Any);

if (menuFlag)

{

Debug.Log("menu button");

}



// 트랙패드

Vector2 touchValue = touchPadAction.GetAxis( StreamVR_Input_Sources.Any );




// 별도로 변수를 사용하지 않고 아래 처럼 직접 접근해서 얻어 올수도 있다.

if (SteamVR_Input._default.inActions.MenuButton.GetStateDown(SteamVR_Input_Sources.LeftHand))

{

Debug.Log("menu button");

}

}

}




액션셋을 사용하는 경우 사용할 액션셋을 미리 로드해 주어야 한다.

 SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs 스크립트를 제공해 주는데, 내용은 단순히 액션셋을 로드하고, 언로드 하는 내용이다.



'프로그래밍 > Unity' 카테고리의 다른 글

[Unity] 테셀레이션  (0) 2019.04.05
[Unity] 인스펙터 변수 이름 변경  (0) 2018.11.13
[Unity] Post Process Stack v2  (0) 2018.10.31
[Unity] AR Foundation Package  (0) 2018.09.20
[Unity] 유니티용 DLL  (0) 2018.09.18
[Unity] VR 환경 끄거나 켜기  (0) 2018.09.14
[Unity] AssetDatabase  (0) 2018.09.12
[Unity] AssetBundle  (0) 2018.08.24
[unity3d] 서피스 쉐이더 정리  (1) 2018.06.26
[Unity] Mesh 생성 및 변경  (0) 2011.06.24