1.以上週的程式碼,加入Touchpad的控制做修改
(在紅色圈圈拉入欲旋轉之物件)

2.程式碼如下
using UnityEngine;
using System.Collections;
public class ControllerTest : MonoBehaviour {
SteamVR_TrackedObject trackedObj;
SteamVR_Controller.Device device;
public GameObject obj;
float a=0.0f,b=0.0f,c=0.0f;
Vector2 rotat=new Vector2(0.0f,0.0f);
public static bool over=false;
void Start () {
trackedObj=GetComponent<SteamVR_TrackedObject>();
a=obj.transform.rotation.x;//將欲旋轉物件的x,y,z軸資訊給予控制用的變數
b=obj.transform.rotation.y;
c=obj.transform.rotation.z;
}
// Update is called once per frame
Vector2 tp2;
bool bTouched=false;
void Update () {
device = SteamVR_Controller.Input ((int)trackedObj.index);
Vector2 tp=Vector2.zero,tp1=Vector2.zero;
if (device.GetPress (SteamVR_Controller.ButtonMask.Touchpad)){//若按壓Touchpad
tp1 = device.GetAxis ();//讀取Touchpad資訊
float angle=Vector2.Angle (new Vector2 (1, 0), rotat);
//計算按壓位置與向量(1,0)之間的角度,好分別按下的是上下左右
if (angle > 45 && angle < 135) {//若按下上或下
if (rotat.y > 0){//上
a+=3.0f;//角度加3度
}
else{ //下
a-=3.0f;
}
}
else {//若按下左或右
if (rotat.x>0){//左
b+=3.0f;
}
else{//右
b-=3.0f;
}
}
}
obj.transform.rotation = Quaternion.Euler (new Vector3 (a, b, c));
//將計算完的角度值給予物件
}
}
下週預計加入投影效果以及實際使用的物件
沒有留言:
張貼留言