[英]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)
,将目标设置为模型。 虽然这种方法确实有效,但仍然可以使用它。
原来不需要脚本。 实现该功能的必要步骤是禁用CardboardMain的Head子项的Track Rotation和Track Position ,这可以在编辑器中完成。 没有跟踪相机保持静止。
但是由于CardboardHead脚本应用于对象本身,所有实际的跟踪转换都直接应用于该对象。
如果要将任何对象固定在摄像机前面,请将其设置为摄像机的子对象。您可以在编辑器中或运行时执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.