簡體   English   中英

將對象“固定”在相機前面(Google Cardboard + Unity)

[英]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) ,將目標設置為模型。 雖然這種方法確實有效,但仍然可以使用它。

原來不需要腳本。 實現該功能的必要步驟是禁用CardboardMainHead子項的Track RotationTrack Position ,這可以在編輯器中完成。 沒有跟蹤相機保持靜止。

但是由於CardboardHead腳本應用於對象本身,所有實際的跟蹤轉換都直接應用於該對象。

如果要將任何對象固定在攝像機前面,請將其設置為攝像機的子對象。您可以在編輯器中或運行時執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM