推薦閱讀
CSDN主頁
GitHub開源地址
Unity3D插件分享
簡書地址

我的個人博客
QQ群:1040082875
一、前言
HTC vive手柄各個按鈕的響應事件,已實現的功能是按手柄上的原盤上下左右鍵移動,是平移,不是射線瞬移。這種方式在眼鏡里太暈了。
二、代碼
using UnityEngine; using System.Collections; public class Move : MonoBehaviour { /// /// 手柄位置 /// SteamVR_TrackedObject tracked; /// /// 玩家 /// public Transform player; /// /// 方向 /// public Transform dic; /// /// 速度 /// public float speed; void Awake() { //獲取手柄控制 tracked = GetComponent(); } // Use this for initialization void Start() { } // Update is called once per frame void FixedUpdate() { var deviceright = SteamVR_Controller.Input((int)tracked.index); //按下圓盤鍵 if (deviceright.GetPress(SteamVR_Controller.ButtonMask.Touchpad)) { Vector2 cc = deviceright.GetAxis(); float angle = VectorAngle(new Vector2(1, 0), cc); //下 if (angle > 45 && angle < 135) { player.Translate(-dic.forward * Time.deltaTime * speed); } //上 else if (angle < -45 && angle > -135) { //Debug.Log("上"); player.Translate(dic.forward * Time.deltaTime * speed); } //左 else if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180)) { //Debug.Log("左"); player.Translate(-dic.right * Time.deltaTime * speed); } //右 else if ((angle > 0 && angle < 45) || (angle > -45 && angle < 0)) { //Debug.Log("右"); player.Translate(dic.right * Time.deltaTime * speed); } } else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)) { Debug.Log("按下扳機鍵"); } else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.Grip)) { Debug.Log("按下手柄側鍵"); } else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu)) { Debug.Log("按下手柄菜單鍵"); } else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu)) { Debug.Log("按下手柄菜單鍵"); } } /// /// 根據在圓盤才按下的位置,返回一個角度值 /// /// /// /// float VectorAngle(Vector2 from, Vector2 to) { float angle; Vector3 cross = Vector3.Cross(from, to); angle = Vector2.Angle(from, to); return cross.z > 0 ? -angle : angle; } } ```
unity
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。