-載visual studio code、震動+觸控面板-
1.下載visual studio code和.NET
2.震動+觸控面板使物件移動、顯示座標
程式:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;
public class MyScript : MonoBehaviour
{
public SteamVR_Action_Boolean triggerDown;
public SteamVR_Action_Vibration hapticAction;
public SteamVR_Action_Single squeezeAction;
public SteamVR_Action_Vector2 touchpadTouch;
// Start is called before the first frame update
public GameObject myObj;///建立的移動物件,用obj gameobj指定自己讓方塊能移動
Vector3 old;///舊座標(作為座標疊加的值++
bool myTouched=false;///初始touch 在還沒碰觸之前設為false((初始座標0,0
void Update()
{
if(triggerDown.GetState(SteamVR_Input_Sources.Any))
{
hapticAction.Execute(0,1,150,75,SteamVR_Input_Sources.LeftHand);
print("triggerDown");
}
if(triggerDown.GetState(SteamVR_Input_Sources.Any))
{
hapticAction.Execute(0,1,150,75,SteamVR_Input_Sources.RightHand);
print("triggerDown");
}
float triggerValue=squeezeAction.GetAxis(SteamVR_Input_Sources.Any);
Vector2 padPos = touchpadTouch.GetAxis (SteamVR_Input_Sources.Any);
if(triggerValue > 0.0f)
{
print (triggerValue);
}
if (padPos != Vector2.zero)
{
if(myTouched == false){///在第一次踫觸時((0,0 用這
old.x = padPos.x; old.y = padPos.y;///碰觸的值指定為cube的座標
myTouched = true;
}
print(padPos);///第一次碰觸後((前一次座標疊加上去
myObj.transform.position = new Vector3(myObj.transform.position.x + padPos.x- old.x, myObj.transform.position.y + padPos.y - old.y, 0);///cube的移動量
old.x = padPos.x; old.y=padPos.y;///碰觸的值指定為cube的座標
}else{
myTouched = false;
}
}
}
沒有留言:
張貼留言