通过头VR纸板控制对象

时间:2016-02-08 20:24:30

标签: c# android virtual-reality

有人可以告诉我如何进行头部转向吗?我知道如何在只移动相机时这样做,但我想通过头部和相机来跟踪物体。 我需要这个,因为我想对对象实现游戏逻辑(如果我可以将相机视为普通对象,它对我来说也会有用)。

我发现此代码仅用于转向摄像头:

public float speed = /* some number */;

private CardboardHead head;

void Start()
{
head = // find the CardboardHead
// example:
// head = Camera.main.GetComponent<StereoController>().Head;
// or, make the variable public and use drag-and-drop in the Editor
}

void Update()
{
transform.position += speed * head.Gaze.direction;
}

我开始为团结制作游戏,所以如果我犯了一些错误,请纠正我。

1 个答案:

答案 0 :(得分:1)

你从这里使用Unity的纸板插件吗? https://developers.google.com/cardboard/unity/download

如果你这样做,那么有一个名为cardboard main的预制件,将它放在场景中,然后如果你看到里面有一个名为Head的游戏对象,它包含CardboardHead脚本。所以这是在你的脚本中:

public GameObject head; // drag the Head gameobject to here or you can just get it from the start

void Start()
{
    if (!head) // if you didn't drag the gameobject
    {
        head = FindObjectOfType<CardboardHead>().gameObject;
    }
}

void Update()
{
    transform.position += speed * head.transform.forward; // it is better to multiply by Time.deltaTime
}

btw为什么它被标记为Java?

新问题:

attachment

所以这就是我所做的。我分裂了'视觉'和'机制'。我从播放器中删除了网格渲染器,冻结了刚体的旋转。我为“视觉”创造了一个新孩子,它有一个名为Rotate.cs的脚本并移除了它的对手。

脚本更改: 在Forward.cs中使用rb.AddForce(transform.forward * speed);返回,在Rotate.cs中使用

void Update () {
        transform.Rotate(Vector3.right * 5);
}

这是我能想到的最快的解决方案,我相信还有其他可以尝试的解决方案