unity3d slider血条怎么做boss血条,一条减得快一条减得慢

[原创]unity3D学习【功能实现】之六:延续功能五,血条,点击减血等ugui
之前功能五用的是text
mesh,发现这个功能更多的用在3D方面,而且好像用到的地方不多,所以这个用ugui的画布canvas来做。
& 1、首先建立一个背景2d
object-sprite,改名为bg,随便拖张背景图片。这一步并不重要
有一点要讲下,就是我的素材,在project里面的两张图片my2048和空数字。他们中的inspector中的pixels per
unit我都改为了1。为什么呢,我是这样的比如我的
空数字,这张图片的像素是80*80,所以我在unity里面是1比1的关系。
&2、然后在hierarchy下
UI-Button建立一个按钮。会自动创建在Canvas下面。点击Canvas,在他的inspector,修改Render
Mode为World Space,这样这个Canvas就成了一个在unity世界中的一个gameobject。
3、然后修改Canvas的width和height都为80,还有Button的width和height也是为80,把空数字
拖到Button里面,把Button改名为player,好了,这就是我们的敌人。把player下自动创建的text删除,这个我们用不到。
//////////////////把以上物体,坐标x,y都归0,免得你找不到在哪里了///////////////////////////
////////////////下面在,做血条弹出来的动画(是一个文字动画),要用到Animation/////////////////////////////
4、点击player--右键UI--Text,在player下面建立一个text,然后自己修改一些属性。我把他的posY修改成60,也就是说,相对与player中心点0,0的坐标,y轴上
5、选中Text。然后点击菜单栏的window-Animation。就可以编辑这个text动画了。他的动画只有一个,就是y坐标从60变成120。然后去掉myAnimation中的Loop
Time的勾选,这样就不会重复动画播放了。
////////////////点击运行一下,会看到一个在player头上上升的数字//////////////////////
////////现在我们要,点一下这个player让他少一点血,头顶冒出少血的文字//////////////////////
6,先把Text做成一个prefab,然后把原来的Text删除。
7,然后是做player点击响应事件。player建立一个c#改名为hitButton。把start和update都删除了。代码的邹星如下
&&& public
GameObject mT
&&& public void
HitBlood(){
&&& GameObject
go=(GameObject)Instantiate (mText);
go.GetComponent().SetParent(this.transform);
8、你的添加player的按钮点击响应事件。选中player,他的inspector中的On&
Click的点击+号,把player拖到Run time下面。然后在Run
time的右边选择函数HitButton--HitBlood函数就可以了
9、这样我们运行的时候,就会响应这个函数了& public void
HitBlood()。现在把函数完整一下。
&&& private int
bloodNum=1000;
&&& public
GameObject mT
&&& public void
HitBlood(){
&&& GameObject
go=(GameObject)Instantiate (mText);
go.GetComponent().SetParent(this.transform);
tempnum=Random.Range(30,100);
bloodNum-=
if(bloodNum&0){
go.GetComponent().text=(-tempnum).ToString();
&&& }else{
go.GetComponent().text="没血了。你死了";
&&& Destroy
(gameObject,0.2f);
10、完善后发现一个问题,就是点击敌人Player以后,血条text不停的增多,我们要让血条出现后一段时间,自己摧毁,所以我们给prefab预制件Text,添加一个c#,改名为dectroyit,代码如下&&&
&&& void Start
&&& Destroy
(gameObject,0.5f);//出现0.5秒后,消失
最后:写的详细点,希望通过这个例子,能给初学者提供多方面的学习思路。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。6595人阅读
昨天在群里有人在做游戏的时候遇到了一个坑,就是用UGUI做人物血条跟随遇到了大坑,今天就来说说如何用UGUI来做人物血条跟随。
第一种: 把Canvas画布作为Player的子物体。
首先:布置一下场景,简单的地面和一个胶囊人物。。碰撞器刚体材质灯光什么的都加上,最后就变成了这样。
然后在Player上写一个脚本来控制人物的移动,代码很简单,如下:
public float speed = 10f;
void FixedUpdate ()
float h = Input.GetAxisRaw(&Horizontal&) * speed * Time.deltaT
float v = Input.GetAxisRaw(&Vertical&) * speed * Time.deltaT
rigidbody.MovePosition(transform.position + new Vector3(h, 0, v));
这样我们就把基本的布置都做好了,接下来就开始我们的血条制作。
第一种方案:
在Player下创建一个Canvas画布,然后在Canvas中创建一个Slider作为我们的血条。。把slider下面的Background和Handle Slide Area删除掉或者禁用掉。像我这样(灰色表示禁用)
在Fill中把Color调成红色,有自己喜欢的图像源也可以自己替换
这里我们忽略了一个最重要的东西,就是必须把Canvas的渲染模式选择WorldSpace,然后把相机添加进去,这是最重要最关键的一步
通过上面的步骤,我们已经完成了,最后的步骤就是修改修改画布的大小与位置就行了,把画布拖到人物头顶就OK,大功告成!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47449次
排名:千里之外
原创:16篇
(2)(1)(2)(2)(3)(2)(4)查看: 3089|回复: 5
问下BOSS血条的问题~~~~~~~~~~~~~~~~~~~~~~~~~~长~~~~~~~~~~~
猥币2144631
在线时间288 小时
阅读权限50
帖子猥币巴士票
猥言大义 Lv.5, 积分 1411, 距离下一级还需 589 积分
刚完这个游戏,现在打到第二章,没太弄明白BOSS的血条是怎么回事。
开鬼眼后能看到一条蓝的一条红的。红的应该是血条吧,那蓝的是指什么。
一般刚开战时,打了好几分钟,一直都是掉蓝条的血。本来以为是打掉蓝条才能掉血,可是好像又不太对,因为后期时看到蓝条还有不少,BOSS就死掉了。
因为耐力有限,没有详细研究,求解答。。。
猥币110732
在线时间1183 小时
阅读权限100
帖子猥币巴士票
RE: 问下BOSS血条的问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本帖最后由 gkki 于
09:36 编辑
02.png (11.6 KB, 下载次数: 4)
09:29 上传
01.png (38.72 KB, 下载次数: 4)
09:29 上传
其實不重要 別管就好
在线时间242 小时
阅读权限50
帖子猥币巴士票
猥言大义 Lv.5, 积分 1984, 距离下一级还需 16 积分
一开始打到boss会出红光,减蓝条。
蓝条空了,或是断肢,或是boss血量少过一半时,出蓝光,减红条(血量)。
在线时间242 小时
阅读权限50
帖子猥币巴士票
猥言大义 Lv.5, 积分 1984, 距离下一级还需 16 积分
哦,对了,蓝条是盔甲,大概。。嗯。。。
猥币2144631
在线时间288 小时
阅读权限50
帖子猥币巴士票
猥言大义 Lv.5, 积分 1411, 距离下一级还需 589 积分
有点明白了,就是如果想全破的话,尽量在打BOSS出红光的时候输出是吧。以后出蓝光的时候少打,免得还没破完BOSS就死了。。
猥币441008
在线时间11451 小时
阅读权限150
帖子猥币巴士票
想要全破用弓最简单,可以锁定一个部位往死里打
& & & & & & & & & &
成就猎人Rank.C【稀有成就】
随便玩玩就拿到这么多了,SO EASY,妈妈再也不用担心我的成就 (获得累计超过10个成就--不包括负面成就)
我的朋友很多【普通成就】
朋友不只是踏脚石,偶尔也可以当坐垫的哦(好友数超过100名)
管理团队【光辉事迹】
猥皮大本营管理团队特有的红色令牌。象征权力与责任的契约之证。(担任过论坛各级版主)
成就猎人Rank.D【普通成就】
你已经踏上了成就收集的不归路,5个成就怎么可能满足你的需求,继续努力吧! (获得累计超过5个成就--不包括负面成就)
水元素【普通成就】
水、H2O、みず、water,额...总之怎么叫都行了
(累计发帖1000即可解锁)
水精灵【稀有成就】
我很喜欢水,因为这就是我存在的意义...(累计发帖10000即可解锁)
浮云爱好者【普通成就】
一朵,两朵,三朵,呵呵呵… (累计获得1000朵浮云)
常客【普通成就】
《我的业余生活》从前有一个论坛叫TGBUS…(在线时间超过1000小时)
略疼【稀有成就】
(续《我的业余生活》2)我在那里…消磨了大量的… (在线时间超过5000小时)
浮云收藏家【稀有成就】
已经收藏到这么多浮云了吗,不错嘛!(累计获得5000朵浮云)
浮云鉴定砖家【光辉事迹】
浮云对你来说,已经没有秘密了!(累计获得10000朵浮云)
日常【光辉事迹】
(续《我的业余生活》3)人参啊……(在线时间超过10000小时)
Powered by14399人阅读
unity3d(27)
本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。
http://blog.csdn.net/lzhq1982/article/details/
上一篇讲了NGUI如何制作游戏界面,这一篇来点干货,重点讲NGUI制作头像,血条。先上一张图。
OK,这个就是我实现后的结果。先看看英雄的头像血条部分。
看图说话,我的英雄头像和血条蓝条是在左上角绘制的,所以这些UI都绘制在了锚点LeftTop部分,过程是:先增加一个锚点,我起名Anchor-LeftTop,然后在Inspector面板上找到UIAnchor脚本,Side那里选择TopLeft。
锚点制作完成,然后在锚点下创建一个Panel,命名为HeroBase,我将所有的英雄头像血条蓝条都绘制在这个面板上,这样有益于统一管理,比如我觉得头像位置不好,我移动这个面板就可以了,不用头像血条什么的都重调。然后我要在这个面板上加多少元素呢,如上图,HeroBlood(血条),HeroMana(蓝条),Label(英雄名字),Sprite(heroHead)(头像),Sprite(heroHeadBox)(头像背景),Sprite(heroName)(名字背景),就这些。
我用到的所有图素都用NGUI的Atlas Maker打成了一张图,然后从中选择自己需要的,这个和cocos2d的spriteBatchNode类似,具体怎么用可以参考雨松大神的这篇文章:,我这里就不介绍了。先说那几个sprite,相对简单一些,选择NGUI-&Open the Widget
Wizard,设置如下图所示:
Atlas选你刚建的那个Atlas,用不着字体,Template选Sprite,然后点Sprite会出那个Atlas里的所有图片,选一张你需要的,最后AddTo你要加的面板上就可以了。然后你会在你的Game Scene上看到,调整它到你想要的位置,Unity的可视化编辑太方便了。这里我的头像用的是《时空领地》里的露娜的头像,再一次宣传一下,一款很不多的单机游戏哦,哈哈,sprite很简单,这里重点说一条,就是有关sprite的屏幕显示的前后顺序,如果图素是来自于一个Atlas里的,那么可以通过调整UISprite下的Depth来调整前后遮挡关系,数值越大越在上面,如果不是同一个Atlas里的资源,那调Depth不管用,Unity也会提示你,这时候可以通过调translate的Z值来调整前后。
下面是本篇的重点,血条和蓝条。
我的血条蓝条是用NGUI的Slider做的,选择NGUI-&Open the Widget Wizard,我这里的Atlas是用NGUI自带的Fantasy Atlas,找不到的可以在这里找:Project-&Assets-&NGUI-&Examples-&Atlases-&Fantasy,里面选蓝色小方块的Fantasy Atlas,这是prefab,然后自行拖到那个Widget Tool上的Atlas处。剩下的设置如下图:
Empty就是背景图素,就是没有任何填充的时候的框的图素,Full就是前景,填充满的时候的图素。点击Add To,就会创建一个Slider的控件,其下包含背景,前景和sprite,sprite不用,删掉。然后看背景部分,把scale那里调成长方形,例如我把x调成了200,y是30,然后UISprite部分设置如下:
先看那个Color Tint,是背景框的颜色,默认白色,看我最开始的那张图,我希望即使血条空了漏出后面的框,也是有透明红框的效果,所以这里我设置成了淡红,旁边那个小笔是个吸管工具,你点它可以在界面上提取任何颜色,很方便,Copy是可以复制当前颜色,会在Clipboard中体现出来,当在另一个同样的设置中也想用这个颜色时,点击Paste就可以了,复制粘贴嘛。
重点是下面的Sprite Type,如果用默认的Simple,你会发现你这里是很难看的有黑框的原始图素,选Sliced是那种水平拉伸的图素,选Tiled是垂直的一格一格的图素,适合从上到下进度的那种,Filled选项,是设置那种需要转圈进度的方式,你可以都试一下,我们这里选Sliced。
同理设置前景,颜色要用大红,效果就出来了,然后选择那个Slider父控件,我这里是HeroBlood,我们看一下它的UISlider部分:
那个Value就是我们用来显示进度的百分比,最大为1,你可以拖动它后运行一下看看效果。那个Steps我不知道怎么用,默认就好了,Direction那里有必要说一下,咱们这里是水平的,如果你之前Sprite Type那里选的Tiled,那这里应该选垂直。
好了,看看用法,用法超级简单,你也可以研究一下它的UISlider脚本,里面有个参数是sliderValue,对应的就是上图那个Value,只要改变它就可以了,绘制部分不用你管,它的UISlider里面的Set函数都处理好了,所以你只要像下面这样写一句代码就可以了。
bloodSlider.sliderValue = (float)curHP / MAX_HP;
不用我解释了吧。
在血条上加个数值吧,这样更直观一些。看上面我的slider截的图,我在slider下加了个Label,选择NGUI-&Open the Widget Wizard,Atlas无所谓,Font选NUGI自带的Fantasy Font,它也在上述的Fantasy文件夹下,设置如下图:
然后调整它的位置到血条上,Depth调整到最前面。
用法也简单,直接上代码吧:
bloodText.text = string.Format(&{0}/{1}&, curHP, MAX_HP);
只要是进度条都可以像上面这么做,怪物的头像血条也是这种方法,我这里就不赘述了。下一篇我重点讲一下NGUI如何制作中文字体。好累,终于写完了,哈哈。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:268459次
积分:3070
积分:3070
排名:第11576名
原创:36篇
评论:124条
(1)(11)(6)(1)(2)(1)(21)怎么做一个圆形的进度条或者是血条
我想做一个圆形的进度条,类似有些游戏的血条,是在人物头像四周一圈的。我现在有了几个想法,但都有些问题。1、比较笨的方法,做模型圆环,根据进度长度需求,分别切成不同段数。(现在我能想到的直接能实现的)2、用GUI自带的进度条,让后让他弯成圆形。(没有方法思路。。。)3、用两个模型圆片,下面一个是满圆,上面一个是扇面。中间部分通过shader遮挡掉,改变扇面大小,遮挡满圆圆环来达到效果。(这个最可行。但是怎样灵活改变扇面大小,没有思路,求解!!)4、NGUI可不可行,有没有类似的东西可以直接用的。
要评论请先&或者&
我也觉得第三个方法最可行,难的是要动态控制遮罩的角度
ngui的slider可以直接用的有环形的进度条
:ngui的slider可以直接用的有环形的进度条 ( 13:00) 在哪个版本的哪个示例有啊?我找了半天没找到。。。
我不知道具体哪个版本开始有的,但是最新版本肯定有,没有示例就是uislider只要设置foreground的fill dir 就可以图片用透明的就可以了
ngui滑动条原理是缩放面片,我要是换成圆的中心点放哪?这个圆环片没法做啊
2楼说的不是lz想要的。楼主想要的应该是NGUI的UIFilledSprite的FillAmount从0到1。楼主试试就知道了。
LZ可以看看hog大大的帖子,是用shader实现的。
感谢楼上 问题已经解决 shader真是好强大啊
做一个slider 或image可以做的

我要回帖

更多关于 unity 血条跟随 的文章

 

随机推荐