2019年3月12日 星期二

逸臻的筆記Week04-載visual studio code、震動+觸控面板

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


沒有留言:

張貼留言