【发布时间】:2016-03-20 08:07:12
【问题描述】:
我是 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,它将相应地移动对象。还能怎么办?
我确实尝试在主相机实例上应用transform.LookAt (target),将目标设置为模型。虽然这种方法确实有效,但它是一种生涩的可用方式。
【问题讨论】:
-
如果您将对象放在相机下方的层次结构中会怎样?
-
感谢您的输入,@DenisEfimov - 请参阅下面的评论。我还将模型移动到一个空的 GameObject 以更好地控制枢轴点。
标签: c# unity3d google-cardboard