我是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");
}
}
}
答案 0 :(得分:1)
要获得广告牌行为(文本始终指向相机),您还必须将更改的相机旋转应用于文本网格:
_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);
}