保持对象“;固定的“;在相机前(谷歌纸板+Unity)

本文关键字:谷歌 +Unity 对象 相机 | 更新日期: 2023-09-27 18:26:42

我是Unity(和VR)的新手,正试图在Google Cardboard中建立一个小例子,在这个例子中,我有一个模型,当用户转头时,它会转动——类似于Google Cardboard应用程序中的面具演示。因此,当用户抬头时,模型向上旋转,当向左看时,模型向左旋转等。

我的场景当前有一个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),将目标设置为模型。虽然这种方法确实有效,但它是急功近利的方法。

保持对象“;固定的“;在相机前(谷歌纸板+Unity)

原来不需要脚本。实现该功能的必要步骤是从CardboardMainHead子项禁用Track RotationTrack Position,这可以在编辑器中完成。在没有跟踪的情况下,相机保持静止。

但是,由于CardboardHead脚本应用于对象本身,所有实际的跟踪转换都直接应用于该对象。

如果要将任何对象固定在摄影机前面,请将其作为摄影机的子对象。您可以在编辑器或运行时执行此操作。