unity3d角色头顶信息3D2D遮挡解决方案(二).docVIP

unity3d角色头顶信息3D2D遮挡解决方案(二).doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

cuotian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档