我是 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)
,将目标设置为模型。虽然此方法确实有效,但使用起来有点生涩。
最佳答案
原来不需要脚本。实现该功能的必要步骤是从CardboardMain 的Head 子项中禁用Track Rotation 和Track Position ,这可以在编辑器中完成。如果不跟踪,相机将保持静止。
但是由于 CardboardHead 脚本应用于对象本身,所有实际的跟踪转换都直接应用于该对象。
关于c# - 将对象 "fixed"保持在镜头前(Google Cardboard + Unity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273887/