码迷,mamicode.com
首页 > 编程语言 > 详细

unity学习笔记一 受到伤害时的颜色变化

时间:2014-12-26 09:33:46      阅读:724      评论:0      收藏:0      [点我收藏+]

标签:

最近在跟着视频学做,很简单的demo

技术分享

就是这个了,看过的人都知道,官方的。刚刚四级的我只能找点国内重制的看了

 

现在想做的效果就是受到伤害时会变红,让后慢慢平滑过渡到白色

   在update方法中如下

    

void Update()
    {
     //鼠标左击模拟受到伤害
if( Input.GetMouseButtonDown(0)) { TakeDamage(30f); } //颜色变白 bodyRenderer.material.color =Color.Lerp(bodyRenderer.material.color, Color.white, smooth * Time.deltaTime); }

当然,在TakeDamage方法中会将颜色变红。 至此都毫无问题

现在想在颜色回复白色时添加判断优化点,思路就是判断当前颜色为红色才变白,很简单 加if

 void Update()
    {
        if( Input.GetMouseButtonDown(0))
        {
            TakeDamage(30f);
        }
        if(bodyRenderer.material.color.Equals(Color.red))
        {
            bodyRenderer.material.color = Color.Lerp(bodyRenderer.material.color, Color.white, smooth * Time.deltaTime);
        }
    }

运行,然后就:

技术分享

死活不变白了,

开断点调试

技术分享

具体过程不赘述,反正后来颜色变成图中所示,系统red颜色的RGB是技术分享

至此明白了,Color.Lerp 是逐渐变色,所以虽然看上去技术分享是红色,但和红色有区别,所以无法触发变色

将条件判断为不是白色

void Update()
    {
        //鼠标左击模拟受到伤害
        if( Input.GetMouseButtonDown(0))
        {
            TakeDamage(30f);
        }
     //判断条件设置为不是白色
if(!bodyRenderer.material.color.Equals(Color.white)) { //颜色变白 bodyRenderer.material.color = Color.Lerp(bodyRenderer.material.color, Color.white, smooth * Time.deltaTime); } }

 

本人做.net,机缘巧合之下接触unity,感觉挺有意思,个人认为这和做程序开发有一定异同,现在还在熟悉api阶段,掌握好工具才能做出好东西啊

 

总结一下:

    1.断点调试一定要掌握,不过unity的调试有所不同,他是每一帧调用一次,想了解具体可以看看我正在研究的unity生命周期

    2.初学最好找一些现成的例子,推荐官方的,质量好,包齐全,而且免费,不要让模型什么的扰乱学习的心态。

    3.前段时间看到园子里的一篇文章,说的是要思考,学东西是要想一想,可能想不明白,但如果看到脚本copy过来运行下就算掌握,

     可能自己做时就什么都不会。

 

unity学习笔记一 受到伤害时的颜色变化

标签:

原文地址:http://www.cnblogs.com/ben1992/p/4185579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!