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); } } } }