• unity3d 血液



    这里的人物头像和血条是在3d世界生成的,所以有真正的纵深感和遮挡关系,废话不多说,看我是怎么实现的。


    第一步。先在UI Root里制作头像和血条。

    这个制作步骤基本和我前面一篇文章介绍头像血条的制作步骤一致,以下我截个图。


    就是上面的HeroPanel,东西非常easy,创建一个主面板HeroPanel。然后在里面创建一个Slider,用来显示血条,再创建一个sprite。用来显示头像,我这里另一个sprite是头像的背景框,然后调整位置和血条的颜色,不知道怎么做的看我前面的头像血条的文章,做完是这个样子:



    第二步,把头像和血条做成prefab。

    把上面制作的HeroPanel拖到Project的Resources目录下(Project->Assets->Resources)。没有Resources目录的自己创建一个,为了将来的载入。这样就生成了HeroPanel的prefab,然后就能够把之前UI Root下的那个删掉了。


    第三步。进入程序。

    上面的准备工作OK后,就是编程环节了。

    我的每一个角色下挂了一个Npc脚本,在Npc脚本的Start里载入HeroPanel的prefab。

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. GameObject heroPanel = Resources.Load("HeroPanel"as GameObject;  
    2. _heroPanel = Instantiate(heroPanel, transform.position, transform.rotation) as GameObject;  
    3. _heroPanel.transform.localScale = new Vector3(0.006f, 0.006f, 0.006f);  
    4. _bloodSlider = _heroPanel.GetComponentInChildren<UISlider>();  
    5. _heroHeight = gameObject.collider.bounds.size.y;  

    上面代码非常easy,先是载入HeroPanel的prefab,然后生成实例_heroPanel,然后调整大小,这个一定要调成自己想要的大小。不然大的不忍直视啊。接着获取里面的UISlider脚本,赋给变量_bloodSlider,后面用得到。

    假设想改变头像图片能够在这里操作,我就不改了。最后获取该角色的身高。用其碰撞盒获取,后面Update里计算坐标用得到。

    然后就是Update部分:

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. Vector3 pos = new Vector3(transform.position.x, transform.position.y+_heroHeight+HEAD_OFFSET, transform.position.z);  
    2. _heroPanel.transform.position = pos;  
    3. _heroPanel.transform.rotation = Camera.main.transform.rotation;  

    在Update里要随时获得角色的坐标。最重要的就是y坐标,由于要放到角色头顶上,所以这时就用到了前面的_heroHeight。后面又加了个HEAD_OFFSET,是偏移量,我这是1.0,然后把这个坐标赋给_heroPanel,这样头像血条就跟着角色走了。但另一点别忘了,就是它的朝向问题。你要时刻保持这个面板朝向摄像机,这就是第三句代码的作用。

    行。在这里,你必须实现的基本功能,非常easy对,剩下的就是的血slider该,这和我以前的文章介绍如何使用相同的血。这里是变化_bloodSlider的value值。它是该百分比,在这里,我不引进。哈哈,磕踢。

  • 相关阅读:
    Java 分布式系统 实现session共享
    MySQL 大数据量使用limit分页,随着页码的增大,查询效率越低下。
    Linux下安装Zookeeper
    Mysql Window 下安装
    Spring Boot 教程demo
    全文搜索引擎 Elasticsearch (三)logstash-input-jdbc同步数据 到elasticsearch
    全文搜索引擎 Elasticsearch (二) 使用场景
    67.基于nested object实现博客与评论嵌套关系
    66.基于共享锁和排他锁实现悲观锁并发控制
    65.基于document锁实现悲观锁并发控制
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4664049.html
Copyright © 2020-2023  润新知