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是角色模型。

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

Unity3d中角色模型和角色名字保持相对位置的更多相关文章

  1. (转) [教程] Unity3D中角色的动画脚本的编写(一)

    ps: 这两天研究unity3d,对动画处理特别迷糊,不知FBX导入以后,接下来应该怎么操作,看到这篇文章,感觉非常好,讲解的很详细. 已有好些天没写什么了,今天想起来该写点东西了.这次我所介绍的内容 ...

  2. 转 [教程] Unity3D中角色的动画脚本的编写(二)

              在上一篇,我们介绍了有关Animation这个类中的部分方法,我后来想了想,这么介绍也不是个办法(其实有些方法我自己也没用过),该介绍点实际的东西了,毕竟我们是要做东西出来的.那好 ...

  3. Unity3D中Ragdoll的用法

    一.创建Ragdoll      见unity3d组件文档里的Ragdoll Wizard.由于unity3d中的Ragdoll设置的骨骼点名字与3DMAX里人体骨骼命名有些不一样,下图为Unity3 ...

  4. [Unity3D]Unity3D游戏开发之角色控制漫谈

    各位朋友,大家好.我是秦元培,欢迎大家关注我的博客,我的博客地址blog.csdn.net/qinyuanpei.今天呢,我们来说说Unity3D中的角色控制,这篇文章并非关注于Unity3D中的某项 ...

  5. Unity3D游戏开发之游戏读/存档功能在Unity3D中的实现

    喜欢我的博客请记住我的名字:秦元培,我的博客地址是:http://qinyuanpei.com 转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanp ...

  6. asp.net中使用基于角色role的Forms验证

    http://www.cnblogs.com/yao/archive/2006/06/24/434783.html asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统 ...

  7. [Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频

    使用环境 unity3D 5 pro vuforia 4 ios 8.1(6.1) xcode 6.1(6.2) 1.新建unity3d工程,添加vuforia 4.0的工程包 Hierarchy中 ...

  8. Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 尚未授予访问 Tomcat 服务器的权限。请在服务器管理器的 Tomcat 定制器中设置 "manager-script" 角色的正确用户名和口令。 有关详细信息, 请查看服务器日志。

    错误描述: 发布时控制台出现: 部署错误: 尚未授予访问 Tomcat 服务器的权限.请在服务器管理器的 Tomcat 定制器中设置 "manager-script" 角色的正确用 ...

  9. Json数据解析在Unity3d中的应用

    最近做项目过程中因为Json文件名写错了一个字母Unity报错,找错误找到半夜,当时为了验错,写了一个小Demo,正好借此总结一下Json. 1.什么是Json JSON(JavaScript Obj ...

随机推荐

  1. 自学华为IoT物联网_07 物联网安全

    点击返回自学华为IoT物流网 自学华为IoT物联网_07 物联网安全 1. 物联网安全的事件 事件1: 特斯拉事件 车载终端被入侵,通过CAN总线命令可远程控制车辆启停: 本地关键信息存储未做保护,印 ...

  2. django——模板层

    每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了,模板层就是 ...

  3. 07-Python入门学习-字符编码与文件处理

    字符编码 人操作计算机使用人类认识的字符,而计算机存放都是二进制数字所以人在往计算机里输入内容的时候,必然发生: 人类的字符------(字符编码表)-------->数字 比如我输入一个‘上’ ...

  4. XIV Open Cup named after E.V. Pankratiev. GP of Europe

    A. The Motorway 等价于找到最小和最大的$L$满足存在$S$使得$S+(i-1)L\leq a_i\leq S+i\times L$ 即 $S\leq\min((1-i)L+a_i)$ ...

  5. GMA Round 1 数列与方程

    传送门 数列与方程 首项为1,各项均大于0的数列{$a_n$}的前n项和$S_n$满足对于任意正整数n:$S_{n+1}^2-2*S_{n+1}*S_{n}-\sqrt{2}*S_n-1=0$,求$a ...

  6. __x__(25)0907第四天__ overflow 父元素对溢出内容的处理

    overflow    父元素对于溢出内容的处理 visible;    默认值,对于溢出内容,在父元素之外显示. hidden;    对于溢出内容,进行隐藏,不显示. scroll;    对于溢 ...

  7. linux locate命令

    1.命令简介         locate(locate) 命令用来查找文件或目录. locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/ml ...

  8. 源码包安装apache

    含有的命令:cd,wget,tar,cd,yum,./configure,make,make install,vim ===安装apache=== [root@ycj ~]# cd /usr/src/ ...

  9. bitmap 合并图片

    把两张bitmap覆盖合成为一张图 /** * 把两个位图覆盖合成为一个位图,以底层位图的长宽为基准 * @param backBitmap 在底部的位图 * @param frontBitmap 盖 ...

  10. java实现求最大子数组和的逐步显示

    package 最大的子数组和; import java.util.Scanner; public class shuzu { public static int maxArr(int a[]) { ...