杨航最近在学Unity3D
using UnityEngine;
using System.Collections;

public class NPC : MonoBehaviour {

//主摄像机对象
        public  Camera camera;
        //NPC名称
        private string name = "我是doudou";

//主角对象
        public GameObject hero;
        //NPC模型高度
        float npcHeight;
        //红色血条贴图
        public Texture2D blood_red;
        //黑色血条贴图
        public Texture2D blood_black;
    //默认NPC血值
        private int HP = 100;

void Start ()
        {
                根据Tag得到主角对象
                //hero = GameObject.FindGameObjectWithTag("Human");
                得到摄像机对象
                //camera = Camera.main;
            blood_red = new Texture2D(100, 10,TextureFormat.RGBA32,false);

blood_red.SetPixel(100,10, Color.red);
            blood_black = new Texture2D(100, 10, TextureFormat.RGBA32, false);
            blood_black.SetPixel(100,10, Color.black);

//注解1
                //得到模型原始高度
                float size_y = collider.bounds.size.y;
                //得到模型缩放比例
                float scal_y = transform.localScale.y;
                //它们的乘积就是高度
                npcHeight = (size_y *scal_y) ;

}

void Update ()
        {
                //保持NPC一直面朝主角
            //    transform.LookAt(hero.transform);
        }

void OnGUI()
        {
                //得到NPC头顶在3D世界中的坐标
                //默认NPC坐标点在脚底下,所以这里加上npcHeight它模型的高度即可
                Vector3 worldPosition = new Vector3 (transform.position.x , transform.position.y + npcHeight,transform.position.z);
                //根据NPC头顶的3D坐标换算成它在2D屏幕中的坐标
                Vector2 position = camera.WorldToScreenPoint (worldPosition);
                //得到真实NPC头顶的2D坐标
                position = new Vector2 (position.x, Screen.height - position.y);
                //注解2
                //计算出血条的宽高
                Vector2 bloodSize = GUI.skin.label.CalcSize(new GUIContent(blood_red));

//通过血值计算红色血条显示区域
                int blood_width = blood_red.width * HP / 100;
                //先绘制黑色血条
                GUI.DrawTexture(new Rect(position.x - (bloodSize.x / 2), position.y - bloodSize.y, bloodSize.x, bloodSize.y), blood_black);
                //在绘制红色血条
                GUI.DrawTexture(new Rect(position.x - (bloodSize.x / 2), position.y - bloodSize.y, blood_width, bloodSize.y), blood_red);

//注解3
                //计算NPC名称的宽高
                Vector2 nameSize = GUI.skin.label.CalcSize(new GUIContent(name));
                //设置显示颜色为黄色
                GUI.color = Color.yellow;
                //绘制NPC名称
                GUI.Label(new Rect(position.x - (nameSize.x / 2), position.y - nameSize.y - bloodSize.y, nameSize.x, nameSize.y), name);

}

//下面是经典鼠标点击对象的事件,大家看一下就应该知道是什么意思啦。
        void OnMouseDrag ()
        {
                Debug.Log("鼠标拖动该模型区域时");
        }

void OnMouseDown()
        {
                Debug.Log("鼠标按下时");

if(HP >0)
                {
                        HP -=5 ;
                }

}
        void OnMouseUp()
        {
                Debug.Log("鼠标抬起时");
        }

void OnMouseEnter()
        {
                Debug.Log("鼠标进入该对象区域时");
        }
        void OnMouseExit()
        {
                Debug.Log("鼠标离开该模型区域时");
        }
        void OnMouseOver()
        {
                Debug.Log("鼠标停留在该对象区域时");
        }

}



UNITY3D 脑袋顶血顶名相关推荐

  1. 生日游戏html,小朋友过生日室内游戏

    小朋友过生日室内游戏(一): 1.顶气球,两人拿一根绳隔开,两边各一组,一组两人,准备一个气球,两边的人用脑袋顶,不许用手,不能掉地,不能碰绳,不能出界,否则算对方赢. 2.击鼓传花,一人敲一个东西, ...

  2. 天猫高管全面解读大快消2018新零售打法

    "两个礼拜增长了80万粉丝.过去4年我们累计了41万粉丝,现在用新零售的一个策略,两个礼拜干出了4年的两倍."林清轩创始人孙春来说:"天猫旗舰店是一个流量低成本获取入口. ...

  3. (转载)IT职场故事:新人如何菜鸟变凤凰

    IT职场故事:新人如何菜鸟变凤凰 张锦喜 眼下,又一批毕业生走进了职场.换下学生时代一贯的T恤牛仔,穿上职业套装,由学生变身为职业人.在这些职场新鲜人的心里,除了满怀的兴奋和憧憬,还有一点对职场的忐忑 ...

  4. 美团技术面1小时,我看出了和月薪3w的差距

    今年年初,一个朋友的公司辞退了 10 多个程序员. 老板找员工面谈时,为了让员工相对容易接受(说白了就是想让你尽快走人),会说公司效益不好要倒闭了.大环境不好.行业趋势下滑,唯独不会说: 你的能力或许 ...

  5. 乔布斯的64周年诞辰,苹果滞销的第N天

    今天(美国时间 2 月 24 日)是乔布斯的 64 岁诞辰,愿这位苹果公司的创始人在天堂一切安好. 写在前面 十几个小时前,苹果公司 CEO Tim·Cook 在 Twitter 发表推文纪念乔布斯的 ...

  6. unity menuitem_Unity热更_打AssetBundles包

    Unity热更_打AssetBundles包 Unity开发离不了热更新,现在市面上有很多的热更方案,XLua.ToLua以及C#热更方案ILRuntime,以腾讯的XLua为例,若要实现热更新,As ...

  7. 创业公司死亡公式:人越多死得越快!

    来源 | 土匪投资日记(tufei-plus) 公司人数是创业公司的第一大天敌. 中国有句古话叫"人多力量大",但放在公司里可能是个伪命题. 现在的创业不比以前,创业都会争取拿一笔 ...

  8. 魏鹏机器人_痴迷农业科技,他发明智能分拣机器人给胡萝卜照CT

    "自动按照国际标准对果蔬的大小.果形.颜色.缺陷进行品质分级,颜值高的胡箩卜装箱出口销售,颜值低的可以进行再加工."日前,在位于莱西市店埠镇的青岛有田农业发展有限公司,记者看到一台 ...

  9. 直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术

    简介: 你还在为分析机器负载高而苦恼?这款 ssar 工具独创 load5s 指标精准定位超硬核. 编者按:本文整理自龙蜥SIG技术周会,作者闻茂泉,阿里云计算平台事业部SRE运维专家,是龙蜥社区跟踪 ...

最新文章

  1. 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?
  2. AI换脸鉴别率超99.6%,微软用技术应对虚假信息
  3. How to bind multiple properties with formatter on one control
  4. 没有外层实列可以访问_这糕点外层香酥,内馅香甜可口,让人吃一次就爱上了,做起来...
  5. sklearn 常用模块及类与方法
  6. 【算法】剑指 Offer 47. 礼物的最大价值
  7. 14、ASP.NET MVC入门到精通——Ajax
  8. 用pyqt5做个图书馆数据管理客户端!--pyqt+mysql的使用(入门必看!)
  9. python中常用库_Python运维中20个常用的库和模块,总有一个用的到~
  10. 基于特征全埋点的精排ODL实践总结
  11. 计算机弹出虚拟U盘,我们通过工具所自带的电脑模拟器对我们u盘制作启动盘进行模拟启动测试...
  12. ConcurrentHashMap源码分析,轻取面试Offer(二)
  13. centos7 crontab未执行问题排查
  14. 【UE4】物理材质(蓝图)
  15. Android 手机上获取手机当前上网IP地址(手机网关给手机号分配的IP)
  16. solr读取word,pdf
  17. 利用selenium尝试爬取豆瓣图书
  18. 他99年出生,本科身份摘FOCS 2021最佳学生论文奖,曾4刷NOI金牌
  19. 老闪创业那些事儿(39)——有梦想的春雷
  20. “EasyUEFI只能在基于(U)EFI启动的Windows操作系统上安装”解决方案

热门文章

  1. java获取mysql执行计划_好程序员Java学习路线之MySQL的执行计划
  2. 《MySQL——主备一致性六问六答》
  3. 【设计模式之美】<Reading Notes>抽象类与接口
  4. system.setin_Java System类setIn()方法及示例
  5. kotlin 或 运算_Kotlin程序对两个数字执行算术运算
  6. 密码学加密算法分类_密码学中的国际数据加密算法(IDEA)
  7. Anaconda中下载速度贼慢?
  8. 编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元
  9. java调用 solr集群_Solr集群安装Version5.5.2(cloud模式)
  10. 笨小熊 -- ACM解决方法