Muh*_*han -2 c# unity-game-engine virtual-reality
我刚刚开始学习HTC vive应用程序开发与团结,并希望与Object进行交互,并希望在控制器与之交互时获取它.尝试学习StreamVR Unity Toolkit文档.我在示例演示中找到了一个场景,其中Gameobject通过控制器进行交互,但涉及的脚本很多.我很惊讶在一个立方体VRTK_InteractalbeObject被附加并且它正在响应控制器.我怎样才能在htc vive中获得交互对象.
所以,这是与控制器对象交互的众多解决方案之一 - 我将在这里展示最简单的一个.
A.[CamerRig]从SteamVR文件夹中找到预制件并将其放在层次结构中:

B.Controller (right)->Model在其中找到GameObject:
C.GameObject使用Rigidbody和创建SphereCollider并将其作为Controller (right)->ModelGameObject的子项
C.1.确保此对象与...处于同一位置Model GameObject
D.现在玩游戏,移动你的右vive控制器推动其他任何GameObjects有Rigidbody和任何Collider.
E.要使用vive控制器按钮,请使用此脚本,并将其放在Controller (right)GameObject上.
public class VIVEController : MonoBehaviour
{
public SteamVR_TrackedObject trackedObj;
private SteamVR_Controller.Device controller;
void Start ()
{
controller = SteamVR_Controller.Input ((int)trackedObj.index);
}
void Update ()
{
if (controller.GetPressDown (Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger))
{
OnTriggerPressed ();
}
if (controller.GetPressDown (Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad))
{
OnTouchpadPressed ();
}
}
private void OnTriggerPressed()
{
Debug.Log("OnTriggerPresse");
}
private void OnTouchpadPressed()
{
Debug.Log("OnTouchpadPressed");
}
}
Run Code Online (Sandbox Code Playgroud)
F.从检查员分配trackedObj(与GameObject此脚本相同)
G.SteamVR_RenderModel在方法中查找脚本和注释LoadComponents
for (int i = 0; i < t.childCount; i++)
{
var child = t.GetChild(i);
child.gameObject.SetActive(false);
StripMesh(child.gameObject);
}
Run Code Online (Sandbox Code Playgroud)
这是必要的,否则您的自定义对象GameObject是控制器模型的子对象,将变为非活动状态.
恢复 - 这很容易,但你需要做很多步骤.尝试使用控制器按钮,例如,只有在按下触发器时才按下对象.
作为奖金,这是我用同样的方法制作的小游戏:https: //www.youtube.com/watch?v = kzX7Iw6cHZ8
| 归档时间: |
|
| 查看次数: |
1549 次 |
| 最近记录: |