3D游戏中,经常遇到这样的情况。角色模型上需要显示角色名字或者血条等信息。

如果用一个摄像机会有可能出现名字或血条显示不正常等问题,所以我采用两个摄像机。一个渲染名字或血条等UI,另一个渲染角色模型。

下面以NGUI为例,实现这一功能。

如图所示,一个相机负责渲染UI,另外一个负责渲染游戏场景。

再添加脚本NamePanel,代码如下:

/*
date:2014-10-13
author:wg
description:英雄名字面板
*/ 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是角色模型。

然后点击运行,就会发现名字面板紧跟着模型

最新文章

  1. asp.net mvc 上传文件
  2. mac 给某个目录添加权限
  3. MyBatis之CRUD
  4. &lt;script&gt;元素的位置
  5. Mongoose 是什么?
  6. 003--VS2013 C++ 多边形绘制
  7. android开发,关于android app实现静默安装自己(系统签名)
  8. dblink 的源数据表结构修改后在存储过程里执行报错
  9. 依据Uri获得sd卡图片
  10. Python 解LeetCode:680. Valid Palindrome II
  11. 生成ssl秘钥的方法(纯粹本人记录用的,勿踩)
  12. Bower快速学习
  13. ssh到虚拟机---一台主机上
  14. ZT Linux可用的最新版本的sublime text注册
  15. 经典中的品味:第二章 C++基本的对象,类型和值(上)
  16. Java并发编程笔记之ArrayBlockingQueue源码分析
  17. 003.Docker容器管理
  18. DBCHART
  19. To be a better me
  20. pam_frpintd.so 错误修复

热门文章

  1. Kali Linux常用服务配置教程启动DHCP服务
  2. (三)ajax请求不同源之jsonp跨域
  3. css 网格布局简单应用
  4. NumPy数组对象
  5. 更新node和npm到最新版本
  6. JAVA 学习日记
  7. Codechef July Challenge 2018 : Picking Fruit for Chefs
  8. LCA(包含RMQ)
  9. [LeetCode] Maximum Depth of N-ary Tree N叉树的最大深度
  10. jquery运用FormData结合Ajax异步上传表单,超实用