|
|
- namespace VRTK.Examples
- {
- using UnityEngine;
-
- public class ControlsMenu : MonoBehaviour
- {
- public float spawnDistance = 0.8f;
- public GameObject menuSlate;
- public VRTK_ControllerEvents controllerEvents;
- public VRTK_ControllerEvents.ButtonAlias toggleButton = VRTK_ControllerEvents.ButtonAlias.ButtonTwoPress;
-
- protected bool isVisible;
-
- protected virtual void Awake()
- {
- isVisible = false;
- ToggleVisibility();
- }
-
- protected virtual void OnEnable()
- {
- if (controllerEvents != null)
- {
- controllerEvents.SubscribeToButtonAliasEvent(toggleButton, true, ToggleButtonPressed);
- }
- }
-
- protected virtual void OnDisable()
- {
- if (controllerEvents != null)
- {
- controllerEvents.UnsubscribeToButtonAliasEvent(toggleButton, true, ToggleButtonPressed);
- }
- }
-
- protected virtual void ToggleButtonPressed(object sender, ControllerInteractionEventArgs e)
- {
- isVisible = !isVisible;
- if (isVisible && menuSlate != null)
- {
- Transform headset = VRTK_DeviceFinder.HeadsetTransform();
- menuSlate.transform.position = new Vector3(headset.position.x, 0f, headset.position.z) + (headset.forward * spawnDistance);
- menuSlate.transform.position = new Vector3(menuSlate.transform.position.x, 0f, menuSlate.transform.position.z);
- Vector3 targetPosition = headset.position;
- targetPosition.y = menuSlate.transform.position.y;
- menuSlate.transform.LookAt(targetPosition);
- }
- ToggleVisibility();
- }
-
- protected virtual void ToggleVisibility()
- {
- if (menuSlate != null)
- {
- menuSlate.SetActive(isVisible);
- }
- }
- }
- }
|