c# - 将对象 "fixed"保持在镜头前(Google Cardboard + Unity)

标签 c# unity3d google-cardboard

我是 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),将目标设置为模型。虽然此方法确实有效,但使用起来有点生涩。

最佳答案

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

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

关于c# - 将对象 "fixed"保持在镜头前(Google Cardboard + Unity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273887/

相关文章:

c# - 我怎样才能始终向上舍入 float ?

c# - 开发人员如何引用大量不同的实体预制件?

unity3d - 无法与 Unity 包管理器本地服务器进程建立连接 - Unity?

unity3d - 统一的 360 查看器,纹理出现在顶部和底部扭曲

javascript - 在 Javascript 中检测 Google Cardboard 磁性按钮点击

c# - 当我更改设置的漫游属性时,如何保留用户设置的值?

C# Excel 互操作合并不起作用

javascript - ASP.Net 数组因 Javascript 函数而失去结构

iOS 14 Google Cardboard View 已损坏

android - 从ImageTarget Android获取模型对象