Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “保留对象”;固定的;镜头前(谷歌纸板+;Unity)_C#_Unity3d_Google Cardboard - Fatal编程技术网

C# “保留对象”;固定的;镜头前(谷歌纸板+;Unity)

C# “保留对象”;固定的;镜头前(谷歌纸板+;Unity),c#,unity3d,google-cardboard,C#,Unity3d,Google Cardboard,我是Unity(和VR)的新手,我正试图在谷歌硬纸板上建立一个小例子,在这个例子中,我有一个模型,当用户转动她的头时,它就会转动——类似于谷歌硬纸板应用程序中的面具演示。因此,当用户向上看时,模型向上旋转,当向左看时,模型向左旋转,等等 我的场景当前有一个CardboardMain和我的3D模型。我已将硬纸板头部脚本附加到我的模型上,该模型现在随着头部移动而正确旋转。缺少的是让对象保持在摄影机前面 为了实现这一功能,我创建了一个脚本,并将其附加到我的3D模型上。脚本如下所示: using Uni

我是Unity(和VR)的新手,我正试图在谷歌硬纸板上建立一个小例子,在这个例子中,我有一个模型,当用户转动她的头时,它就会转动——类似于谷歌硬纸板应用程序中的面具演示。因此,当用户向上看时,模型向上旋转,当向左看时,模型向左旋转,等等

我的场景当前有一个CardboardMain和我的3D模型。我已将硬纸板头部脚本附加到我的模型上,该模型现在随着头部移动而正确旋转。缺少的是让对象保持在摄影机前面

为了实现这一功能,我创建了一个脚本,并将其附加到我的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;
    }
}
使用UnityEngine;
使用系统集合;
公共类注视者:单一行为{
私人卡板头;
专用矢量3偏移量;
公共游戏对象scrimshaw;
//用于初始化
无效开始(){
head=Camera.main.GetComponent().head;
scrimshaw=GameObject.FindGameObjectWithTag(“scrimshaw”);
}
//在帧结束时更新
无效更新(){
//head.transform.position=头部在平面上的位置
//head.Gaze.direction=头部注视的位置
偏移=head.Gaze.direction+head.transform.position;
scrimshaw.transform.position=scrimshaw.transform.position+偏移量;
}
}
然而,我的模型的位置并没有改变。我的印象是,如果我使用新的向量3提供
transform.position
,它将相应地移动对象。否则怎么办


我尝试在主摄影机实例上应用
transform.LookAt(target)
,将目标设置为模型。虽然这种方法确实有效,但它是一种快速可用的方法。

结果表明,不需要脚本。实现该功能的必要步骤是从CardboardMain的头部子项禁用轨迹旋转和轨迹位置,这可以在编辑器中完成。没有跟踪,相机保持静止


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

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

如果将对象放在摄影机正下方的层次结构中会怎么样?感谢您的输入,@DenisEfimov-请参阅下面我的评论。我还将模型移动到一个空的游戏对象,以便更好地控制轴心点。