首页 > 代码库 > unity学习笔记一 受到伤害时的颜色变化

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

最近在跟着视频学做,很简单的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学习笔记一 受到伤害时的颜色变化