在 Unity 中使用相机进行 3D 文本旋转

3D Text Rotation with the camera in Unity

我是 Unity3D 的初学者,并且与游戏开发有关。最近,我正在尝试做一个简单的程序,以便在 HoloLens 中实现它。目标是让 3D 文本(“_text”)沿相机移动的方向移动,效果非常好。但是,当我将头(使用 HoloLens)移动 (+/-)90 度时,我无法阅读文本,因为我没有面对文本,180 度时我看到我的 3d 文本是倒置的。如果有人能帮助我,我将不胜感激。 :)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TextManager : MonoBehaviour {

    public GameObject _text;
    public TextMesh _startText;

    // Use this for initialization
    void Start () {  
        if (_text == null) _text = GameObject.Find("StartText");
        if (_startText == null) _startText = GameObject.Find("StartText").GetComponent<TextMesh>();   
    }

    // Update is called once per frame
    void Update () {

        if (_text.activeSelf)
        {
            var camPos = Camera.main.transform.position + Camera.main.transform.forward;
            _text.transform.position = camPos;
            _text.transform.localScale = Vector3.one * 0.025f;            
        }

        else
        {
            Debug.Log("deactive _startText");
        }

    }
}

要获得广告牌行为(文本始终朝向相机),您还必须将更改后的相机旋转应用于文本网格:

_text.transform.rotation = Camera.main.transform.rotation;

为了获得更加新兴的 3D 体验,有时在相机落后时将文本翻转 180° 会很有用,但保留整体方向。为此:

        Vector3 objectNormal = _text.rotation * Vector3.forward;
        Vector3 cameraToText = _text.transform.position - Camera.main.transform.position;
        float f = Vector3.Dot (objectNormal, cameraToText);
        if (f < 0f) 
        {
            _text.Rotate (0f, 180f, 0f);
        }