赞
踩
1、在Desk下新建一个子物体Canvas,重命名为DeskUICanvas并重新设置大小、位置和模式
2、在DeskTips下创建一个子物体Image,重命名为DeskTips,并设置大小、缩放并添加图片源
3、在DeskTips下创建一个Text,设置文字大小和位置
4、在DeskUICanvas下创建一个Image,设置大小和Source Image,为提示下的把手
5、通过代码创建跟踪的脚本
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class ObjectTips : MonoBehaviour {
-
- private GameObject player; //就是CameraRig摄像机
- private Vector3 targetPos; //所要跟踪的目标
-
- void Start () {
- player = GameObject.FindGameObjectWithTag("Player") ; //查找到摄像机
- targetPos = new Vector3(0,transform.position.y,0); //初始化目标位置
-
- }
-
- void Update () {
-
- //更新目标位置的x和z
-
- targetPos.x = player.transform.position.x;
- targetPos.z = player.transform.position.z;
- //跟踪目标位置
- transform.LookAt(targetPos);
-
- }
- }
6、将脚本挂载到canvas上
7、运行后的结果
在门口时看到的提示方向
我进到室内时,提示面向我
我站在屋内各个方向时提示的朝向
我给窗帘换了一个颜色
房子周围加上了篱笆,挺丑的,但是我总算拥有了自己的院子,总算像一个家了
远看窗帘的颜色也还好,没那么丑
注:
1、参考资料:http://edu.manew.com/course/344/learn#lesson/5753
遇到的问题
2、给VRTK_SDKSetup设置Tag为Player,但是运行后报“NullReferenceException: Object reference not set to an instance of an object”空指针异常。
原因:按Ctrl+S进行保存的时候,VRTK_SDK被隐藏,就找不到该物体了
解决办法:如果是在低版本的VRTK中,在VRTK_SDKSetup中的unload事件中被禁用掉了,取消注释该句就可以了
但是在最新的版本中,注释掉该句不管用了,也没找的解决办法。给头盔添加tag的目的是让物体提示总是面向头盔的方向,但是现在头盔总是自动隐藏,就把tag添加到了手柄上,手柄和头盔距离不是很远
3、物体设置lookat后朝向不正确
设置物体在z轴方向是正确朝向的
给canvas添加的代码
- public class ObjectTips : MonoBehaviour {
- private GameObject player; //就是CameraRig摄像机
- private Vector3 targetPos; //所要跟踪的目标
- void Start () {
- player = GameObject.FindGameObjectWithTag("Player") ; //查找到摄像机
- targetPos = new Vector3(0,transform.position.y,0); //初始化目标位置
- }
- void Update () {
- //更新目标位置的x和z
- targetPos.x = player.transform.position.x;
- targetPos.z = player.transform.position.z; //跟踪目标位置
- transform.LookAt(targetPos);
- } }
运行后的结果,可以跟着旋转,但是总是平躺着
原因:容器在y轴旋转了90度,需要保证canvas在任意轴向上没有旋转
解决办法:不要看静态的scene中物体是否设置正确,而是要保证在z轴上没有任何旋转
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。