人物头顶名称与血条更新与绘制
来源:互联网 发布:模拟地球软件apk 编辑:程序博客网 时间:2024/04/27 07:54
人物的名称与血条的绘制方法很简单,但是我们需要解决的问题是如何在3D世界中寻找合适的坐标。因为3D世界中的人物是会移动的,它是在3D世界中移动,并不是在2D平面中移动,但是我们需要将3D的人物坐标换算成2D平面中的坐标,继而找到人物头顶在屏幕中的2D坐标最后使用GUI将名称与血条绘制出来。
首先学习本文的重点内容,如何将游戏世界中任意3D坐标转换成屏幕中的2D坐标。根据这个方法计算出的2D坐标屏幕左下角的点为0.0 ,屏幕右上角的坐标为1.1 所以真实的2D坐标还得通过Screen.height 与Screen.width计算一下才行。
在Unity工程导入角色控制器组件,不知道角色控制器的朋友请阅读我之前的文章哈。创建一个Plane做为游戏的地面,然后利用角色控制器组件创建两个模型,一个做为主角,一个作为NPC,主角可以通过控制来移动从四周来观察NPC对象。由于地面的面积比较小移动主角时为了避免主角越界掉下去,我们做一个边界的物理层。物理层其实很简单,就是给平面四周放置四个平面在四周将平面包围着,给四周的四个平面绑定上Box Collider组件,这样主角就不会越界掉下去啦。因为没有给贴图所以效果上看不到这四个对象。哇咔咔~ 如下图所示,在场景是途中主角被四个平面包围这,即时它拼命的想往外条但是还是跳不出去,哈哈。
创建脚本NPC.cs 然后把脚本挂在NPC对象身上,在脚本中我们绘制主角的血条以及名称。
NPC.cs
注解1:通过collider.bounds.size 可以拿到模型对应三个轴向的高度,但是模型是可以缩放的,所以真实的模型高度应当是原始高度乘以缩放系数才行。 transform.localScale可以拿到模型对应三个轴向的缩放系数,因为这里我们需要模型的高度,所以忽略X轴与Z轴。
注解2:在这里我们计算血条的宽度,GUI.skin.label.Calcsize()这个方法是以默认的皮肤对象Label对象去参数对象的宽高。参数是new GUIContent(blood_Red)意思是拿红色血条的贴图的宽高,它将保存在返回的size中。最后以宽高将血条绘制在屏幕中,我们的血条采取两层。背景是黑色的,前面是红色的,当人物费血时红色血条减少。
注解3: 这里通过字符串来获取它整体的宽度与高度,因为NPC的名称是可变的,所以我们需要动态的获取整体的显示区域。同样是以GUI.skin.label对象去调用CalcSize。
- 人物头顶名称与血条更新与绘制
- Unity3D人物头顶名称与血条更新与绘制
- Unity3D研究院之人物头顶名称与血条更新与绘制一(转)
- Unity3D之人物头顶名称与血条更新与绘制
- Unity3D研究院之人物头顶名称与血条更新与绘制(二十六)
- Unity 绘制人物头顶的血条
- Unity3d人物的名称与血条的绘制方法
- Unity3D 人物头顶名称显示
- Unity制作头顶血条方式对比与优化
- ngui制作人物头顶的头像和血条
- Unity3d GUI人物的名称与hp的绘制方法
- Unity3D技术之名称与血条绘制详解
- 【NGUI】头顶血条(2D与3D的实现)
- unity3d学习笔记(十九)--ngui制作人物头顶的头像和血条
- 制作头顶人物姓名
- 敌人头顶血条的制作心得
- 人物头顶UI (RectTransformUtility.ScreenPointToLocalPointInRectangle)
- unity人物血条
- 自定义类MyThread 实现Runnable接口,主函数创建5个线程,自定义线程类的构造函数输出 创建线程X
- 详解指针与数组
- 承诺投入模型
- 自定义类MyThread 实现Runnable接口,主函数创建5个线程,自定义线程类的构造函数输出 创建线程X -002
- 结构体的内存分配
- 人物头顶名称与血条更新与绘制
- java枚举的作用
- 设计模式之访问者模式
- 了解typename的双重意义
- CoreAnimation
- 2个线程向同一数组中加随机数,每个数组加3个数,交替
- 第一个javascript程序
- VMware网络设置
- implements Runnable synchronized代码块 * 2个线程向同一数组中加随机数,每个数组加3个数,交替