Unity3d中角色模型和角色名字保持相对位置
2024-09-23 15:28:44
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是角色模型。
然后点击运行,就会发现名字面板紧跟着模型
最新文章
- asp.net mvc 上传文件
- mac 给某个目录添加权限
- MyBatis之CRUD
- <;script>;元素的位置
- Mongoose 是什么?
- 003--VS2013 C++ 多边形绘制
- android开发,关于android app实现静默安装自己(系统签名)
- dblink 的源数据表结构修改后在存储过程里执行报错
- 依据Uri获得sd卡图片
- Python 解LeetCode:680. Valid Palindrome II
- 生成ssl秘钥的方法(纯粹本人记录用的,勿踩)
- Bower快速学习
- ssh到虚拟机---一台主机上
- ZT Linux可用的最新版本的sublime text注册
- 经典中的品味:第二章 C++基本的对象,类型和值(上)
- Java并发编程笔记之ArrayBlockingQueue源码分析
- 003.Docker容器管理
- DBCHART
- To be a better me
- pam_frpintd.so 错误修复