Vive开发手册之手柄持续震动

using UnityEngine;

public class ViveShock : MonoBehaviour 
{    
  SteamVR_TrackedObject Hand;    
  SteamVR_Controller.Device device;    
  bool IsShock = false;  //布尔型变量IsShock   
  
  void Start ()    
  {        
    Hand = GetComponent();  //获得SteamVR_ TrackedObject组件
  }    
   
  void Update ()    
  {      
    //防止Start函数没加载成功,保证SteamVR_ TrackedObject组件获取成功!        
    if (Hand.isValid)        
    {            
      Hand = GetComponent();        
    }       
    
    //根据index,获得手柄            
    device = SteamVR_Controller.Input((int)Hand.index); 
    
 if(device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger))
            {            
              IsShock = true;  
              
              StartCoroutine("Shock",0.5f); 
            }    
  } 
  
  IEnumerator Shock(float durationTime)    
  {      
    Invoke("StopShock", durationTime);
        
    while (IsShock)        
    {            
      device.TriggerHapticPulse(500);            
      yield return new WaitForEndOfFrame();        
    }    
  }    
  
  void StopShock()    
  {        
    IsShock = false; 
    //关闭手柄的震动    
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容