繁体   English   中英

将对象“固定”在相机前面(Google Cardboard + Unity)

[英]Keep object “fixed” in front of camera (Google Cardboard + Unity)

我是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;
    }
}

但是,我的模型的位置不会改变。 我的印象是,如果我使用新的向量3提供transform.position ,它将相应地移动对象。 怎么可能呢?

我尝试在Main Camera实例上应用transform.LookAt (target) ,将目标设置为模型。 虽然这种方法确实有效,但仍然可以使用它。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM