首页 > 代码库 > Unity3d中角色模型和角色名字保持相对位置
Unity3d中角色模型和角色名字保持相对位置
3D游戏中,经常遇到这样的情况。角色模型上需要显示角色名字或者血条等信息。
如果用一个摄像机会有可能出现名字或血条显示不正常等问题,所以我采用两个摄像机。一个渲染名字或血条等UI,另一个渲染角色模型。
下面以NGUI为例,实现这一功能。
如图所示,一个相机负责渲染UI,另外一个负责渲染游戏场景。
再添加脚本NamePanel,代码如下:
/*date:2014-10-13author:wgdescription:英雄名字面板*/using UnityEngine;using System.Collections;public class NamePanel : MonoBehaviour{ [SerializeField] UILabel lblName; [SerializeField] GameObject obj; [SerializeField] Camera mainCamera; [SerializeField] Camera uiCamera; void Update() { UpdateNamePosition(); } Vector3 m_position; /// <summary> /// 更新名字位置 /// </summary> void UpdateNamePosition() { //取模型在主摄像机中的世界坐标 m_position = obj.transform.position; //转换为主摄像机的屏幕坐标 m_position = mainCamera.WorldToScreenPoint(m_position); //用得到的屏幕坐标,在UI摄像机中转换为世界坐标 m_position = uiCamera.ScreenToWorldPoint(m_position); m_position.z = 0f; m_position.y += 0.1f; lblName.transform.position = m_position; }}
在Update中更新坐标,实际使用按照具体情况。这里是以屏幕坐标为参考,同时也可以用视口坐标。
将脚本挂在GameManager上,其中:Obj是角色模型。
然后点击运行,就会发现名字面板紧跟着模型
Unity3d中角色模型和角色名字保持相对位置
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。