- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
unity3d角色头顶信息3D2D遮挡解决方案(二)
本来一篇文章就可以说完了,但是上次只是实现了已知的一些功能
? ?? ?首先,我们把要显示的头顶信息所有字体放大10倍
? ?? ?怕你们理解错误我举例说明:
? ?? ?ExpHUDText——FontSize:我原来是20,现在改为200
? ?? ?NameLabel——FontSize:同上
? ???这里也许有小伙伴要发问了:那要是有图片怎么办?
? ???嗯,的确,有些项目中需要制作血条,光字体放大了血条还是看不清楚不等于白说吗
? ???我项目中不需要血条,我们这里就略过吧....
? ? 哈哈,跟大家开个玩笑!
? ? 这个问题我们在最后说,先继续往下看
? ? 我项目中用的是一个VIP logo,当玩家花钱充了VIP,这个logo就会显示出来
? ? 如图,左边的紫色钻石便是logo图片
? ????
? ???因为角色名称有长有短,如果我的logo在固定的位置,那么就会出现logo被角色昵称遮挡
? ???所以我们可以使用锚点来解决这个问题
? ? 值得注意的是,我的logo想一直显示在昵称最左边,那么我锚点的目标参照物就要设置成nameLabel
? ? 这样的话就可以一直保持在最左边了。
? ? 当然,具体看你项目需求,灵活运用
? ? 说到这里,如果你每一步都按照我说的做了,那么你会发现字体在场景中非常非常的大
? ? 这个时候,我们把playerName Scale的x、y、z都设置为0.1
? ? 为什么是0.1呢?因为上文中我们已经把字体放大了10倍
? ? 所以为了得到原本看见的字体尺寸,我们要修改playerName的大小。即:1 / 10 = 0.1
? ? 怕有些小伙伴看懵了,没事,我上截图来说明一下
? ??
? ? 如上图,playername只是一个空物体,它是头顶信息的容器
? ? 好了,这个时候,我们已经发现头顶信息恢复到原状了,而且还比以前清晰多了
? ?我们手动放大playername,发现值越大,字体也就越大,值越小,字体也就越小
? ? 思路来了,我们能不能通过计算角色和摄像机的距离来动态修改这个值呢?
? ? 从而实现不管我们摄像机距离角色多远,字体都保持原有所看见的大小
? ? 为了证实这个想法,我们动手写代码试试
? ? 代码很简单,我就不一一解释了,不懂查手册
font face=新宋体 size=21? ???private Camera camera;//主摄像机
2? ???private GameObject player;//角色
3?
4? ???void Start()
5? ???{
6? ?? ?? ?camera = Camera.main;
7? ?? ?? ?player = GameObject.Find(player);
8? ???}
9?
10? ???void FixedUpdate()
11? ???{
12? ?? ?? ?//计算角色和主相机的距离
13? ?? ?? ?Debug.Log(Vector3.Distance(player.transform.localPosition, camera.transform.localPosition));
14? ???}/font
? ???将脚本挂在player身上,然后运行
? ???在我的项目中,角色和摄像机最近距离为1.5,最远距离为3(这个值只是在我的项目中)
? ???那也就是说,当角色和摄像机距离为1.5时,playername Scale为0.1
? ???那么当摄像机距离为3时呢?即:0.1 / 1.5 * 3 = 当前 playername Scale
? ???ok,写代码试试
font face=新宋体 size=21? ???//挂上脚本后把playerName拖放到个变量上
2? ???public GameObject playerName;
3?
4? ???private Camera camera;//主摄像机
5? ???private GameObject player;//角色
6?
7? ???void Start()
8? ???{
9? ?? ?? ?camera = Camera.main;
10? ?? ?? ?player = GameObject.Find(player);
11? ???}
12?
13? ???void FixedUpdate()
14? ???{
15? ?? ?? ?//计算角色和主相机的距离
16? ?? ?? ?float Distance = Vector3.Distance(player.transform.localPosition, camera.transform.localPos
您可能关注的文档
最近下载
- 专题02 宇宙中的地球-5年(2020-2024)高考1年模拟地理真题分类汇编(北京专用)(解析版).docx VIP
- 城市绿地分类标准 .pdf VIP
- 营养指导员题库.docx VIP
- 专题01 地球和地图-5年(2020-2024)高考1年模拟地理真题分类汇编(北京专用)(解析版).docx VIP
- 四年级【语文(统编版)】古诗三首(第一课时)课件 .pptx
- 质量管理体系工具统计技术.pptx VIP
- 2022年茅台考试真题及答案——计算机专业.pdf
- 发电机短路试验中转子接地保护误动作分析及关键问题探讨.pdf VIP
- Silvaco傻瓜教程—张林—长安大学—2018.06.pdf
- SpringBoot学习笔记(实用完整版).pdf VIP
文档评论(0)