我是Unity(和VR)的新手,我正试图在Google Cardboard中设置一个小例子,我的模型会在用户转过头时转动 - 类似于Google Cardboard App中的模板演示。因此,当用户向上看时,模型向上旋转,向左看时,模型向左旋转。
我的场景目前有一个 CardboardMain 和我的 3D模型。我已将 Cardboard Head 脚本附加到我的模型中,该模型现在可以通过头部运动正确旋转。缺少的是将物体留在相机前面。
为了实现该功能,我创建了一个附加到3D模型的脚本。脚本如下所示:
using UnityEngine;
using System.Collections;
public class lookAtMe : MonoBehaviour {
private CardboardHead head;
private Vector3 offset;
public GameObject scrimshaw;
// Use this for initialization
void Start () {
head = Camera.main.GetComponent<StereoController>().Head;
scrimshaw = GameObject.FindGameObjectWithTag ("Scrimshaw");
}
// Update at end of frame
void LateUpdate () {
// head.transform.position = the positon of the head on the plane
// head.Gaze.direction = positon of where the head is looking
offset = head.Gaze.direction + head.transform.position;
scrimshaw.transform.position = scrimshaw.transform.position + offset;
}
}
但是,我的模型的位置不会改变。我的印象是,如果我向transform.position
提供一个新的向量3,它将相应地移动对象。怎么可能呢?
我确实尝试在Main Camera实例中应用transform.LookAt (target)
,将目标设置为模型。虽然这种方法确实有效,但仍然可以使用它。
答案 0 :(得分:2)
原来不需要脚本。实现此功能的必要步骤是禁用 CardboardMain ,可以在编辑器中完成。没有跟踪相机保持静止。
但是,由于 CardboardHead 脚本应用于对象本身,所有实际的跟踪转换都会直接应用于该对象。
答案 1 :(得分:2)
如果要将任何对象固定在相机前面,请将其作为相机的子对象。您可以在编辑器中或在运行时执行此操作。