【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2395

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 6980|回复: 126

[士郎] [Shader]弹弹弹——橡皮效果

  [复制链接]  [移动端链接]
排名
1
昨日变化

7201

主题

7731

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
11740
威望
30
注册时间
2013-7-29
在线时间
3692 小时
最后登录
2019-1-18

社区QQ达人活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

发表于 2018-9-10 11:04:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
今天玩堡垒之夜,里面敲击建筑时有橡皮那种弹弹弹的效果,挺有意思的,就写了个类似的shader,哈哈
1.1.gif
最终效果 1.2.gif

思路
  • 根据对应的坐标和范围内的顶点,根据法线进行偏移。
  • 根据时间计算偏移持续时间和反弹次数。
源代码
[AppleScript] 纯文本查看 复制代码
Shader "QQ/Elastic"
{
	Properties
	{
		_MainTex("Texture", 2D) = "white" {}
		_Position("xyz:position,w:range",vector) = (0,0,0,1)
		_Normal("xyz:normal,w:intensity",vector) = (0,1,0,0)
		_PointTime("point time",float) = 0
		_Duration("duration",float) = 2
		_Frequency("frequency",float) = 5
	}
		SubShader
		{
			Tags { "RenderType" = "Opaque" }
			LOD 100

			Pass
			{
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				// make fog work
				#pragma multi_compile_fog

				#include "UnityCG.cginc"

				struct appdata
				{
					float4 vertex : POSITION;
					float2 uv : TEXCOORD0;
				};

				struct v2f
				{
					float2 uv : TEXCOORD0;
					UNITY_FOG_COORDS(1)
					float4 vertex : SV_POSITION;
				};

				sampler2D _MainTex;
				float4 _MainTex_ST;
				float4 _Position;
				float4 _Normal;
				float _PointTime;
				float _Duration;
				float _Frequency;
				v2f vert(appdata v)
				{
					v2f o;
					float t = _Time.y - _PointTime;
					if (t>0&&t<_Duration)
					{
						float r = 1 - saturate(length(v.vertex.xyz - _Position.xyz) / _Position.w);
						float l = 1 - t / _Duration;
						v.vertex.xyz += r * l * _Normal.xyz * _Normal.w * cos(t * _Frequency);
					}
						o.vertex = UnityObjectToClipPos(v.vertex);
						o.uv = TRANSFORM_TEX(v.uv, _MainTex);
						UNITY_TRANSFER_FOG(o, o.vertex);
					return o;
				}

				fixed4 frag(v2f i) : SV_Target
				{
					fixed4 col = tex2D(_MainTex, i.uv);
					UNITY_APPLY_FOG(i.fogCoord, col);
					return col;
				}
			ENDCG
		}
		}
}


脚本
[AppleScript] 纯文本查看 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

interface IElastic
{
    void OnElastic(RaycastHit hit);
}
[RequireComponent(typeof(MeshRenderer))]
public class ElasticObject : MonoBehaviour, IElastic
{
    private static int s_pos, s_nor, s_time;
    static ElasticObject()
    {
        s_pos = Shader.PropertyToID("_Position");
        s_nor = Shader.PropertyToID("_Normal");
        s_time = Shader.PropertyToID("_PointTime");
    }
    private MeshRenderer mesh;
    private void Start()
    {
        mesh = GetComponent<MeshRenderer>();  
    }
//调用该方法
    public void OnElastic(RaycastHit hit)
    {
        //反弹的坐标
        Vector4 v = transform.InverseTransformPoint(hit.point);
        //受影响顶点范围的半径
        v.w = 0.6f;
        mesh.material.SetVector(s_pos, v);
        //法线方向,该值为顶点偏移方向,可自己根据需求传。
        v = transform.InverseTransformDirection(hit.normal.normalized);
        //反弹力度
        v.w = 0.2f;
        mesh.material.SetVector(s_nor, v);
        //重置时间
        mesh.material.SetFloat(s_time, Time.time);
    }
}




知乎@CarefreeQ


评分

参与人数 1鲜花 +2 收起 理由
605715432 + 2 很给力!

查看全部评分


跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
回复

使用道具 举报

4四处流浪
309/500
排名
10055
昨日变化
5

0

主题

82

帖子

309

积分

Rank: 4

UID
206155
好友
0
蛮牛币
242
威望
0
注册时间
2017-2-12
在线时间
121 小时
最后登录
2019-1-9
发表于 2018-9-10 11:28:44 | 显示全部楼层
看到那个球...突然有个大胆的想法!学习一下!
[发帖际遇]: 齐宣王哈劳斯 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

5熟悉之中
558/1000
排名
6062
昨日变化
43

7

主题

172

帖子

558

积分

Rank: 5Rank: 5

UID
288872
好友
3
蛮牛币
876
威望
0
注册时间
2018-7-7
在线时间
157 小时
最后登录
2019-1-18
QQ
发表于 2018-9-10 13:01:05 | 显示全部楼层
老司机

回复

使用道具 举报

5熟悉之中
749/1000
排名
3765
昨日变化
20

0

主题

189

帖子

749

积分

Rank: 5Rank: 5

UID
267103
好友
0
蛮牛币
2006
威望
0
注册时间
2018-1-31
在线时间
172 小时
最后登录
2019-1-18
发表于 2018-9-10 13:30:43 | 显示全部楼层
哈哈哈哈
[发帖际遇]: 学习ingNice 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

2初来乍到
121/150
排名
14280
昨日变化
1

0

主题

38

帖子

121

积分

Rank: 2Rank: 2

UID
295054
好友
0
蛮牛币
85
威望
0
注册时间
2018-8-29
在线时间
27 小时
最后登录
2018-12-27
发表于 2018-9-10 14:08:31 | 显示全部楼层
这个球玩儿起来非常不错

回复 支持 反对

使用道具 举报

7日久生情
2395/5000
排名
817
昨日变化
1

1

主题

683

帖子

2395

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
56496
好友
0
蛮牛币
7309
威望
0
注册时间
2014-11-19
在线时间
539 小时
最后登录
2019-1-17
发表于 2018-9-10 14:18:21 | 显示全部楼层
真实,怕是至少要G-cup吧

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1202/1500
排名
4915
昨日变化
29

0

主题

705

帖子

1202

积分

Rank: 6Rank: 6Rank: 6

UID
254705
好友
1
蛮牛币
1194
威望
0
注册时间
2017-11-16
在线时间
209 小时
最后登录
2019-1-18
发表于 2018-9-10 14:19:12 | 显示全部楼层
66666666666666666666666666666

回复 支持 反对

使用道具 举报

排名
25117
昨日变化
6

0

主题

25

帖子

48

积分

Rank: 1

UID
197071
好友
1
蛮牛币
86
威望
0
注册时间
2016-12-29
在线时间
7 小时
最后登录
2018-9-10
发表于 2018-9-10 15:45:48 | 显示全部楼层
学习了

回复

使用道具 举报

排名
34453
昨日变化
20

0

主题

4

帖子

15

积分

Rank: 1

UID
290924
好友
0
蛮牛币
28
威望
0
注册时间
2018-7-23
在线时间
3 小时
最后登录
2018-9-17
发表于 2018-9-10 16:41:56 | 显示全部楼层
厉害厉害厉害

回复

使用道具 举报

7日久生情
1773/5000
排名
3031
昨日变化
8

2

主题

932

帖子

1773

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209046
好友
0
蛮牛币
2469
威望
0
注册时间
2017-3-30
在线时间
363 小时
最后登录
2019-1-18
发表于 2018-9-10 17:01:22 | 显示全部楼层
学习了

回复

使用道具 举报

3偶尔光临
293/300
排名
13295
昨日变化
5

11

主题

65

帖子

293

积分

Rank: 3Rank: 3Rank: 3

UID
37021
好友
0
蛮牛币
1263
威望
0
注册时间
2014-7-29
在线时间
154 小时
最后登录
2018-10-22
发表于 2018-9-10 17:41:09 | 显示全部楼层
I社员工现身说法

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1279/1500
排名
2460
昨日变化
1

1

主题

410

帖子

1279

积分

Rank: 6Rank: 6Rank: 6

UID
56245
好友
1
蛮牛币
3382
威望
0
注册时间
2014-11-18
在线时间
298 小时
最后登录
2019-1-17
发表于 2018-9-11 07:46:08 | 显示全部楼层
真是神一样的存在~

回复 支持 反对

使用道具 举报

7日久生情
1683/5000
排名
1336
昨日变化
1

0

主题

496

帖子

1683

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
87577
好友
0
蛮牛币
5714
威望
0
注册时间
2015-3-31
在线时间
285 小时
最后登录
2019-1-18

锦衣玉食

发表于 2018-9-11 08:28:16 | 显示全部楼层
too good too strong!

回复 支持 反对

使用道具 举报

4四处流浪
328/500
排名
8519
昨日变化
2

0

主题

78

帖子

328

积分

Rank: 4

UID
236975
好友
0
蛮牛币
578
威望
0
注册时间
2017-8-11
在线时间
112 小时
最后登录
2018-12-5
发表于 2018-9-11 08:49:23 | 显示全部楼层
{:106:}
[发帖际遇]: 一个袋子砸在了 怅然若失 头上,怅然若失 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

5熟悉之中
701/1000
排名
5157
昨日变化
3

4

主题

166

帖子

701

积分

Rank: 5Rank: 5

UID
146965
好友
0
蛮牛币
605
威望
0
注册时间
2016-4-27
在线时间
261 小时
最后登录
2018-12-1
发表于 2018-9-11 09:11:07 | 显示全部楼层

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表