效果图

目录

一、Shader部分

1、从整体上,光盾效果只针对自发光(Emission)部分

2、Albedo和Normal对接

3、自发光(Emission)部分

(1)制作时间动画—Animation Speed

(2)制作外色值光波效果(类似海浪)—Shield Wave Effect

(3)制作外图案纹理光波效果(类似(2))—Shield Main Pattern

(4)制作冲击效果—Impact Effect

(5)光盾边缘光效果—Shield RIM

(6)混合所有的光盾效果到Emission(自发光)—Shield Mix for Emission

4、Opacity —不透明度(透明渲染类型)部分

4、顶点偏移量(Local Vertex Offset)部分

外形抖动变形效果,类似果冻—Shield Distortion

二、代码部分

主要是碰撞时产生效果赋值


一、Shader部分

1、从整体上,光盾效果只针对自发光(Emission)部分

我们只需要对自发光部分着重改写。

2、Albedo和Normal对接

只做Color相乘连接到Albedo,normal没做操作,如果需要可自行改写。

3、自发光(Emission)部分

(1)制作时间动画—Animation Speed

Time Parameters

“时间参数”节点以秒为单位输出Unity内部经过的时间,该时间以不同的常数进行缩放。

Output Port Description Type
Output 返回Unity给定的原始时间向量。 Float4
t/20 Returns the time value scaled by a factor of 0.05 (20x slower). Float
t Returns the unscaled time value. Float
t*2 Returns the time value scaled by a factor of 2. Float
t*3 Returns the time value scaled by a factor of 3. Float

(2)制作外色值光波效果(类似海浪)—Shield Wave Effect

控制贴图的offset Y轴偏移量,制作成动画效果,在通过纹理产生波纹效果。

Texture Coordinates

“纹理坐标”节点(快捷键:U键)使用网格UV并根据纹理平铺和偏移参数对其进行操作,以定义如何将纹理映射到3d资产上。如果Tex端口连接到纹理对象,或者如果在节点属性面板中引用了Tex端口,则它们将通过材质检查器中的该纹理字段进行转换。否则,将使用节点的参数或输入来转换坐标。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Texture_Coordinates

Input Port Description Type
Tex 该端口接受一个纹理对象,该对象允许使用其纹理UV参数。覆盖节点耕作和偏移量,而改用物料检查器。 Sampler2D
Tilling 参数Tilling的动态版本。仅当Reference设置为None时可用,否则将被锁定以指示其使用了材质检查器中的Texture属性的填充。 Float2
Offset 参数Offset的动态版本。仅当Reference设置为None时可用,否则将被锁定以指示其使用了材质检查器中的Texture属性的Offset。 Float2
Output Port Description Type
UV(WT) 在vector2的情况下,返回分别包含U和V坐标的vector2,vector3或vector4,vector3的UVW坐标,vector4的UVWT Float2(34)
U 返回包含U坐标的float Float
V 返回包含V坐标的float Float
W 返回包含W坐标的浮点数。仅在“ 坐标大小”设置为“浮动3”时可用. Float
T 返回包含T坐标的浮点数。仅在“ 坐标大小”设置为“浮动4”时可用

(3)制作外图案纹理光波效果(类似(2))—Shield Main Pattern

Shield Pattern Size:控制光盾-Shield Pattern数量密度。

Shield Pattern Color:控制光盾-Shield Pattern色值。

(4)制作冲击效果—Impact Effect

Hit Size:撞击范围大小。

Hit Color:撞击后的颜色。

Hit Position:撞击的位置。

Hit Time:撞击消失时间。

Shield Pattern Color:撞击后要改变的目标颜色。对应(3)中Shield Pattern Color:控制光盾-Shield Pattern色值。

Vertex Position

“顶点位置”节点输出对象空间中的顶点位置。此数据直接从网格中提取,并包含相对于对象原点的顶点位置,这意味着位置值不会更改游戏对象具有的任何变换值。通常用于在“ 局部顶点偏移”输出中使用或创建绑定到对象并保持完全相同的效果,即使您的游戏对象更改了位置,旋转或大小也是如此。
根据使用此节点的位置(顶点或片段/表面函数),它将返回直接值(在顶点函数上)或在顶点之间插入值(在片段/表面函数上)。

注意:不要与“ 世界位置( World Position)”节点混淆。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Vertex_Position

Output Port Description Type
XYZ(W) Returns the vertex position in object space  返回对象空间中的顶点位置 Float3(4)
X Returns only the X component of the vertex position Float
Y Returns only the Y component of the vertex position Float
Z Returns only the Z component of the vertex position Float
W Returns only the W component of the vertex position (By default set to 1). Only visible if Size is set to XYZW. Float

Distance

Distance节点输出两个值或向量A和B之间的欧式距离,可以将其视为以下运算Sqrt(Dot(B-A,B-A))
如果将不同的数据类型连接到每个端口,则将始终对大多数通道的端口类型执行强制转换。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Distance

Compare (A < B) Node

The Compare (A < B) 节点比较其A和B上设置的值,如果A小于B,则输出True;如果A大于或等于B,则输出False。

注意:无论 True and False输入端口可以有不同的数据类型,但投将与渠道的量最多的类型进行。所选类型还将定义输出类型,并定义在比较操作中将使用的AB通道数量。

Input Port Description Type
A First value of the comparison operation. Float [1]
B Second value of the comparison operation. Float [1]
True Value to be outputted if comparison is successful. Float [1]
False Value to be outputted if comparison fails. Float [1]

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Compare_(ALessB)

(5)光盾边缘光效果—Shield RIM

RimLight边缘光主要思路:法线和视角向量的点积越小,证明两向量夹角越大,说明在边缘处,如果夹角小,则说明是正对相机,所以没有边缘发光。

Fresnel Node

菲涅耳节点输出菲涅耳效果的结果。它定义了光到达具有不同折射率的两种材料之间的界面时的行为,反射和折射的量。
该节点在与该反射部分特定的交易,并计算其由下面的表达式定义的菲涅耳反射系数ReflectionCoefficient = Bias + Scale x ( 1 + N.I )^Power.
方程的每个成员都可以修改,但I变量除外,该I变量定义了从摄像机到对象的入射向量,并由该节点在内部将其计算为反向的“世界视图方向”向量。

Input Port Description Type
Normal 要使用的法线向量。如果未连接,则将使用Surface World法线。 Float 3
Bias 定义菲涅耳方程式的Bias变量。 Float
Scale 定义菲涅耳方程式的Scale变量。 Float
Power 定义菲涅耳方程式的幂变量。 Float

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Fresnel

(6)混合所有的光盾效果到Emission(自发光)—Shield Mix for Emission

Mix of Pattern, Wave, Rim , Impact and adding intersection highlight。

图案,波浪,轮辋,冲击和混合相交高光的混合。

  1. 对应(5),光盾边缘光效果。
  2. 对应(3),制作外图案纹理光波效果。
  3. 对应(2),制作外色值光波效果(类似海浪)。
  4. 对应(4),制作冲击效果(Impact Effect)。
  5. 对应(3)中Shield Pattern Color:控制光盾-Shield Pattern色值。
  6. 对应(3)中Shield Pattern Power:控制光盾-Shield Pattern数量密度。

最后把生成的Local var—Emission连接到输出自发光中。

4、Opacity —不透明度(透明渲染类型)部分

需要先配置渲染类型:

然后,给定一个常量控制透明度。

Opacity”输入需要将其“渲染类型”设置为“透明”的着色器,使用从0到1的值范围(从完全透明到完全不透明)来设置整个曲面的透明度。分别; 接受完整的RGB输入。

4、顶点偏移量(Local Vertex Offset)部分

  • 外形抖动变形效果,类似果冻—Shield Distortion

噪声-Noise Generator Node

“噪声生成器”节点使用Type指定的方法根据UV处指定的值在[-1 1]范围内创建浮动噪声值。

注意:输入数据必须在整个几何图形上变化,因为相等的值会产生相同的噪声。一种简单的方法是将“ 纹理坐标”节点连接到其输入。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Noise_Generator

Node Parameter Description Default Value
UV 用于产生噪声的值。相同的输入值始终会产生相同的噪声值。仅在未连接相应的输入端口时可见。 0,0
Scale 用于缩放通过UV端口给定的输入的值。仅在未连接相应的输入端口时可见。 1
Type Method used to generate the noise value

  • Simplex 2D: 使用Simplex 方法从Vector 2创建噪声值。
  • Simplex 3D:  使用Simplex 方法从Vector3创建噪声值。
  • Gradient: 使用“Gradient”方法从Vector 2创建噪声值。.
Simplex 2D
0-1 Range 如果打开,则输出值为[0 1]范围;如果关闭,则为[-1 1]范围。 True

最后,连接到 Local Vertex Offset

  • Local Vertex Offset—局部顶点偏移(相对顶点输出):局部顶点偏移输入可用于通过顶点操纵来更改曲面的形状,其中XYZ坐标将定义每个顶点如何从其相对位置偏移。

二、代码部分

  • 主要是碰撞时产生效果赋值

  foreach (ContactPoint contact in collision.contacts){mat.SetVector("_HitPosition", transform.InverseTransformPoint(contact.point));hitTime = 500;mat.SetFloat("_HitTime", hitTime);}

具体代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;namespace TFHC_ForceShield_Shader_Sample
{public class ForceShieldImpactDetection : MonoBehaviour{private float hitTime;private Material mat;void Start(){mat = GetComponent<Renderer>().material;// Store material reference}void Update(){// Animate the _hitTime shader property for impact effectif (hitTime > 0){hitTime -= Time.deltaTime * 1000;if (hitTime < 0){hitTime = 0;}mat.SetFloat("_HitTime", hitTime);}}void OnCollisionEnter(Collision collision){// On colission set shader vector property _HitPosition with the impact point and// set _hittime shader property to start the impact effect//在colission上设置着色器矢量属性_HitPosition,其影响点为//设置_hittime着色器属性以启动效果foreach (ContactPoint contact in collision.contacts){mat.SetVector("_HitPosition", transform.InverseTransformPoint(contact.point));hitTime = 500;mat.SetFloat("_HitTime", hitTime);}}}
}

https://img-blog.csdnimg.cn/20200109144058304.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTIwOTQ2,size_16,color_FFFFFF,t_70

Unity ASE案例解析—ForceShield(光盾被击打时效果)相关推荐

  1. Unity ASE案例解析—Dissolve Burn(消融效果—镂空、自发光)

    效果图: 一.消融镂空 遮罩效果 设置环境: 在混合模式(Blend Mode )选择遮罩(Masked),这样 渲染类型(Render Type) 自动选择透明切口(Transparent Cuto ...

  2. Unity ASE案例解析—Skybox Cubemap Extended(天空盒子三维贴图效果)

    效果图 目录 1.基础配置 2.BUILT-IN FOG-内置Fog配置 3.CAMERA MODE-切换相机 4.CubeMap设置 5.Cubemap Mix 6.Emission Mix Sha ...

  3. Unity ASE案例解析—AnimatedFire(火焰动画效果)

    效果图 目录 1.基础配置 2.Emission-自发光处理 3.其他处理 火焰效果,主要是处理自发光效果,其他的不做特殊处理. 1.基础配置 Opaque 不透明模式 ZTestMode Less ...

  4. Unity ASE案例解析—AnimatedUVDistortion(动画贴图扭曲效果)

    效果图 贴图: 贴图交叉融合效果 1.基础配置 2.整体图 PS:案例制作过于简单,没啥好分析的. https://img-blog.csdnimg.cn/20200117104306971.png? ...

  5. Unity ASE案例解析—Environment Gradient(环境渐变效果)

    效果图: 环境渐变效果主要是对贴图(Albedo)进行处理,改变它的纹理和色值. 目录 1. 获取世界坐标Y轴矢量遮罩(Mask) 2.利用 1.中的Y轴遮罩做物体 顶部 颜色渐变的插值计算 3.利用 ...

  6. Unity ASE制作彩色流光马赛克 像素风 舞池DJ台效果Shader

    Unity ASE制作彩色流光马赛克 舞池DJ台效果 Shader@TOC 项目需求想写一个舞池DJ台的效果,尝试写了发现制作出好玩的效果. 首先想要得到这种棋盘格的效果,想到了马赛克像素平铺,平铺数 ...

  7. Unity EasyAR3.0 案例解析(一) ------ HelloAR_Coloring3D(涂涂乐)

    EasyAR3.0发布有一段时间了,但是官方群里面出现了各种问题,因此我也没有第一时间去体验,不过非常期待4.0的到来,不需要ARCore和ARKit就能实现平面识别,还有各种炫酷的功能,太感兴趣了, ...

  8. 《Unity 游戏案例开发大全》一6.5 游戏主场景

    本节书摘来异步社区<Unity 游戏案例开发大全>一书中的第6章,第6.1节,作者: 吴亚峰 , 杜化美 , 于复兴 责编: 张涛,更多章节内容可以访问云栖社区"异步社区&quo ...

  9. 《用于物联网的Arduino项目开发:实用案例解析》—— 3.4 小结

    本节书摘来自华章出版社<用于物联网的Arduino项目开发:实用案例解析>一 书中的第3章,第3.4节,作者[美]安德尔·杰韦德(Adeel Javed),更多章节内容可以访问云栖社区&q ...

最新文章

  1. 13 迷人的注册表单设计
  2. BEX5下新建任务到待办任务
  3. mongodb学习(六)索引
  4. 一道经典的SQL面试题
  5. HDU 1978 How many ways DP问题
  6. Java内存模型_基础
  7. 大型网站的可伸缩性架构如何设计?
  8. 计算机专业考试知识点,2016计算机专业知识:精选知识点练习(126)
  9. Oracle中的sql操作符 和分析函数
  10. 那些年我们玩过的游戏
  11. 软件项目文档——WBS
  12. 柳夜熙又更新了,虚拟人的底层技术是什么?
  13. torch.optim.SGD参数详解(除nesterov)
  14. imx6ull:uboot的make xxx_defconfig 过程分析
  15. 图解计算机中的数值范围和浮点数运算
  16. 【手把手带你刷好题】—— 34.求a+aa+aaa+aaaa+aaaaa之和(非初学者勿看)(作业、非力扣)
  17. ​LeetCode刷题实战216:组合总和 III
  18. 数据集cityscapes命令行下载
  19. 2016 Google hosts 持续更新【更新于:2016-04-10】
  20. 损失函数改进方法总览

热门文章

  1. linux查看当前目录大小
  2. 进程间通信的几种方式:管道、信号、消息队列、共享内存
  3. 动手实现一遍Transformer
  4. c语言 字符串和数组指针,C语言数组与指针一本道来
  5. 【Cirrodata】通过python头import导入连接行云数据库
  6. JavaScript 数组索引添加删除操作小案例
  7. iOS 自动化构建 xcodebuild
  8. Xcode编译没问题而使用xcodebuild命令却生成失败
  9. 第四期培训总结——总结我的总结附教大家做总结的总结
  10. 前端中的设计模式——单例模式