Unity3d人物的名称与血条的绘制方法

这篇博客介绍了在Unity3D中如何动态地在3D场景中找到角色的2D坐标,从而在屏幕上正确显示角色的名称和血条。通过NPC.cs脚本展示了如何计算角色头部的2D位置,转换3D坐标到2D屏幕坐标,以及使用GUI绘制血条和名称的过程。

人物的名称与血条的绘制方法很简单,但是我们需要解决的问题是如何在3D世界中寻找合适的坐标。因为3D世界中的人物是会移动的,它是在3D世界中移动,并不是在2D平面中移动,但是我们需要将3D的人物坐标换算成2D平面中的坐标,继而找到人物头顶在屏幕中的2D坐标最后使用GUI将名称与血条绘制出来。

首先学习本文的重点内容,如何将游戏世界中任意3D坐标转换成屏幕中的2D坐标。根据这个方法计算出的2D坐标屏幕左下角的点为0.0 ,屏幕右上角的坐标为1.1 所以真实的2D坐标还得通过Screen.height 与Screen.width计算一下才行。
1
Vector2 position = camera.WorldToScreenPoint (worldPosition);

在unity工程导入角色控制器组件,不知道角色控制器的朋友请阅读我之前的文章哈。创建一个Plane做为游戏的地面,然后利用角色控制器组件创建两个模型,一个做为主角,一个作为NPC,主角可以通过控制来移动从四周来观察NPC对象。由于地面的面积比较小移动主角时为了避免主角越界掉下去,我们做一个边界的物理层。物理层其实很简单,就是给平面四周放置四个平面在四周将平面包围着,给四周的四个平面绑定上Box Collider组件,这样主角就不会越界掉下去啦。因为没有给贴图所以效果上看不到这四个对象。 如下图所示,在场景是途中主角被四个平面包围这,即时它拼命的想往外条但是还是跳不出去。

 

创建脚本NPC.cs 然后把脚本挂在NPC对象身上,在脚本中我们绘制主角的血条以及名称。

  1. NPC.cs
  2. 001
  3. using UnityEngine;
  4. 002
  5. using System.Collections;
  6. 003
  7.   
  8. 004
  9. public class NPC : MonoBehaviour {
  10. 005
  11.   
  12. 006
  13. //主摄像机对象
  14. 007
  15. private Camera camera;
  16. 008
  17. //NPC名称
  18. 009
  19. private string name = "我是雨松MOMO";
  20. 010
  21.   
  22. 011
  23. //主角对象
  24. 012
  25. GameObject hero;
  26. 013
  27. //NPC模型高度
  28. 014
  29. float npcHeight;
  30. 015
  31. //红色血条贴图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值