2

Google Cardboard 프로젝트에서 작업하고 있습니다. 지금 UNITY 3D로 제작 한 특별한 장면에서 둘러 볼 수있는 Android 용 데모가 있습니다. 모든 것이 잘 작동하고 있습니다. & 잘 보이지만 내가 정말로 원하는 것은 다음과 같습니다 :UNITY 3D 용 자석 스크립트

Google Cardboard 자석 버튼을 누르면 앞으로 걸어 가고 싶습니다.

웹상에서 몇 개의 스크립트를 발견했지만 내 UNITY 프로젝트에서이 스크립트를 작동시키는 방법을 정확히 모릅니다.

누구든지이 문제를 해결할 수 있습니까?

+0

사용자 CaseyB 객체에이 스크립트 유니티의 이벤트 시스템 - https://github.com/CaseyB/UnityCardboardTrigger/tree/develop 를 사용하여 이것에 대한 유틸리티를 게시, 이벤트 OnCardboardTrigger은()에 실행됩니다 버튼을 눌렀을 때 같은 물체에 붙어있는 다른 문양들 – Agumander

+0

안녕하세요 아가 맨더, 당신의 반응에 감사드립니다! :) 스크립트를 FirstPersonController에 넣으면 컨트롤러를 움직이게하려면 어떻게해야합니까? –

+0

스크립트에'OnCardboardTrigger()'라는 함수를 넣으십시오.이 함수 안에는 동작 제어가 있습니다. 내가 말할 수있는 한,이 함수는 버튼이있는 모든 프레임에서 작동 제어가 'transform.position + = transform.forward * Time.deltaTime * speed;'처럼 간단 할 수 있도록 실행합니다. – Agumander

답변

2

자석 입력을 올바르게 읽을 수 있다고 가정합니다. 이것은 FPS 스타일 컨트롤러 스크립트를 작성한 방법입니다.

  1. Unity5에서는 자산 패키지 표준 자산/문자를 가져옵니다.
  2. 해당 패키지에서 RigidBodyFPSController.prefab의 인스턴스를 만듭니다.
  3. 자식 개체 "MainCamera"를 제거하십시오.
  4. Google cardboard unitypackage을 가져 오십시오.
  5. 3 단계에서 제거한 "MainCamera"를 CardboardMain.Parefab로 바꿉니다.
  6. RigidbodyFirstPersonController.cs GetInput() 메서드의 복사본을 업데이트하거나 수정하십시오.

getInput에() 앞으로 구글 판지 이동 대체와 :

private Vector2 GetInput() 
{ 
    Vector2 input = new Vector2 
    { 
     x = Input.GetAxis("Horizontal"), 
     y = Input.GetAxis("Vertical") 
    }; 

    // If GetAxis are empty, try alternate input methods. 
    if (Math.Abs(input.x) + Math.Abs(input.y) < 2 * float.Epsilon) 
    { 
     if (IsMoving) //IsMoving is the flag for forward movement. This is the bool that would be toggled by a click of the Google cardboard magnet 
     { 
      input = new Vector2(0, 1); // go straight forward by setting positive Vertical 
     } 
    } 
    movementSettings.UpdateDesiredTargetSpeed(input); 
    return input; 
} 

구글의 SDK에서만 지원의 자석을 검출하기 "를 클릭하십시오." 앞으로 나아갈 방향으로 자석을 누르고 싶다면 Unity3D Asset Store에서 Cardboard Controls+을 사용하는 것이 좋습니다. GitHub의에

+0

나는 IsMoving 플래그가 없다.말해, 그것은 현재의 컨텍스트에 존재하지 않습니다 –

+0

코드 라인에서 IsMoving은 위에서 언급 한 코드 주석이 있습니다. 이 주석은 해당 코드 행을 설명하는 데 사용됩니다. 이 경우 IsMoving의 값은 무엇으로 설정됩니까? IsMoving의 범위는 당신에게 달려 있습니다. 위의 코드 블록 위에'public bool IsMoving; '을 추가 할 수 있습니다. – ShawnFeatherly