예제 #1
0
        public void HandleInput()
        {
            FocusableObject currentFocusableObject = FocusableObject.CurrentObject;

            if (Input.GetButtonDown("Submit"))
            {
                Debug.Log("Submit");
                currentFocusableObject.OnSubmit();
            }

            if (Input.GetButtonDown("Cancel"))
            {
                Debug.Log("Cancel");
                currentFocusableObject.OnCancel();
            }

            if (Input.GetButtonDown("Fire3"))
            {
                Debug.Log("Fire3");
                currentFocusableObject.OnInformation();
            }

            float horizontal = Input.GetAxis("Horizontal");
            float vertical   = Input.GetAxis("Vertical");

            if (horizontal != 0f || vertical != 0f)
            {
                Debug.Log("Arrow");
                FocusableObject.CurrentObject.OnArrow(horizontal, vertical);
                System.Threading.Thread.Sleep(50);
            }
        }
예제 #2
0
	private void CheckEyeFocus() {
		//以Camera为原点生成视线方向的射线判定
		OVRCameraController cameraController = this.GetComponent<OVRCameraController>();
		Vector3 headPosition = Vector3.zero;
		cameraController.GetCameraPosition(ref headPosition);
		Vector3 eyePosition = Vector3.zero;
		cameraController.GetEyeCenterPosition(ref eyePosition);
		eyePosition += headPosition;
		Vector3 sightOrientation = Vector3.zero;
		cameraController.GetCameraOrientationEulerAngles(ref sightOrientation);
		RaycastHit focus;
		Physics.Raycast(eyePosition, Quaternion.Euler(sightOrientation) * Vector3.forward, out focus, eyeSightDistance);
		Transform focusTransform = focus.transform;
		FocusableObject newFocus = focusTransform != null ? 
			focusTransform.GetComponent<FocusableObject>() : null;
		//如果NewFocus不是CurrentFocus,则更新CurrentFocus
		if (currentFocus != newFocus) {
			if (currentFocus != null) 
				currentFocus.IsFocused = false;
			currentFocus = newFocus;
			if (currentFocus != null)
				currentFocus.IsFocused = true;
		}
	}
 void Awake()
 {
     inst = gameObject.GetComponent<FocusableObject>();
 }
예제 #4
0
 void Awake()
 {
     drop = gameObject.GetComponent<Drop>();
     inst = gameObject.GetComponent<FocusableObject>();
 }
예제 #5
0
 public IEnumerator Cancel(FocusableObject focusableObject)
 {
     focusableObject.OnCancel();
     yield return(null);
 }
예제 #6
0
 public IEnumerator Submit(FocusableObject focusableObject)
 {
     focusableObject.OnSubmit();
     yield return(null);
 }
예제 #7
0
 public IEnumerator LeftArrow(FocusableObject focusableObject)
 {
     focusableObject.OnArrow(-1, 0);
     yield return(null);
 }
예제 #8
0
 public IEnumerator UpArrow(FocusableObject focusableObject)
 {
     focusableObject.OnArrow(0, 1);
     yield return(null);
 }
예제 #9
0
 public IEnumerator Information(FocusableObject focusableObject)
 {
     focusableObject.OnInformation();
     yield return(null);
 }