js实现雨滴特效

<!DOCTYPE html>
<html>
	<head>
		<meta charset="{CHARSET}">
		<title></title>
	</head>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		html,body{
			width: 100%;
			height: 100%;
		}
		canvas{			
			background-color: black;
			display: block;
		}
		
	</style>
	<body>
		<canvas id="canvas">
			
			ni hao
		</canvas>
		
		<script>
			var can=document.getElementById("canvas");
			//设置绘图环境
			var cxt=can.getContext("2d");
			
			var w=can.width=window.innerWidth;
			var h=can.height=window.innerHeight;
			//让画布的宽高跟随浏览器变化
			window.onresize=function(){
			var w=can.width=window.innerWidth;
			var h=can.height=window.innerHeight;
			}
			/*//设置画笔颜色
			//cxt.fillStyle="red";
			//绘制图形
			//cxt.fillRect(0,0,50,50);//x,y,宽,高
			//cxt.fill();填充方法(实心) cxt.stroke();触笔方法(空心)
			//设置圆形的路径
			//cxt.arc(250,250,4,0,Math.PI*2,false);//圆心坐标X,Y 半径r,从0度,弧度(math.pi*角度、180)
			//cxt.fill();*/
			var x=100,y=0;
			/*setInterval(function(){
				y++;
				//清除
				cxt.clearRect(0,0,w,h);
				cxt.fillRect(x,y,50,50);
				
			},10);*/
			/*function move(){
				y++;
				cxt.clearRect(0,0,w,h);
				cxt.fillRect(x,y,50,50);
				requestAnimationFrame(move);//原生js的动画
				
			}
			move();*/
			
			//面向对象
			//创建雨滴对象
			var drops=[];
			function Drop(){}
				//添加对象方法
				Drop.prototype={
					init:function(){
						//初始化方法:设置每个雨滴的初始属性
						this.x=random(0,w);
						this.y=0;
						//y方向的速度值
						this.vy=random(2,3);
						
						//最大高度
						this.l=random(0.8*h,0.9*h);
						//波纹的半径
						this.r=1;
						this.vr=1;
						//判断雨滴消失的透明度
						this.a=1;//趋向于0
						this.va=0.96;//透明度的变化系数
						
									
					},
					draw:function(){//绘制图形
						if(this.y>this.l)
						{
							cxt.beginPath();//先开始路径
							cxt.arc(this.x,this.y,this.r,0,Math.PI*2,false);
							cxt.strokeStyle="rgba(0,255,255,"+this.a+")";
							cxt.stroke()
						}
						else
						{
							cxt.fillStyle="rgb(0,255,255)";
							cxt.fillRect(this.x,this.y,2,2);
						}
						
						this.update();
					},
					update:function(){//更新
						if(this.y<this.l)
						{
							this.y+=this.vy;
						}
						else
						{
							if(this.a>0.03)
							{
								this.r+=this.vr;
								if(this.r>50)
								{
									this.a*=this.va;
								}
							}
							else{
								//初始化雨滴数据
								this.init();
							}
							
						}
						
					}
				}
			
				
				/*var drop=new Drop();
				drop.init();
				drop.draw();*/
			
			/*function dd(){for (var i=0;i<30;i++) {
				var drop=new Drop();
				drop.init();
				//drop.draw();
				drops.push(drop);
			}
			requestAnimationFrame(dd);
			}
			dd();	*/
			
			for (var i=0;i<30;i++) {
				setTimeout(function(){
					var drop=new Drop();
				drop.init();
				//drop.draw();
				drops.push(drop);
				},i*200);
				
			}
			function move(){
				//先绘制透明层再绘制雨滴,雨滴把先绘制的雨滴覆盖
				cxt.fillStyle="rgba(0,0,0,0.1)";				
				cxt.fillRect(0,0,w,h);
				for (var i=0;i<drops.length;i++) {
				drops[i].draw();
			}
				requestAnimationFrame(move);
			}
			move();
			
			//生成随机数的方法
			function random(min,max){
				return Math.random()*(max-min)+min;
			}
		</script>
	</body>
</html>

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity中创建雨滴粒子特效,可以按照以下步骤进行操作: 1. 首先,找一张雨点的贴图,并将其做成材质球。使用Legacy Shader/Particles/Additive Shader,并选择贴图。根据需要,可以调整颜色以达到期望的效果。如果选择Particles/Alpha Blended Shader,可能会导致效果很暗,类似于黑色的雨滴。 2. 创建一个粒子系统,并将其命名为rain。将粒子系统的Rotation的X值从-90改为90,这样粒子就会向下运动。将粒子系统的Renderer中的Material改为自己新建的材质,这样粒子就会变成雨点。将Shape改为Box,可以形成类似降雪的效果。根据需要,可以调节Scale的大小来形成降雨区域。勾选Color over Lifetime,可以创建一个从透明到不透明的渐变效果。 3. 根据需要,可以调整粒子的速度和密度来使其更逼真。可以通过调整粒子系统的参数来实现这一点。 根据引用和引用中所提供的信息,可以得出以上关于unity雨滴粒子特效的步骤和方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [unity用粒子系统做雨的特效](https://blog.csdn.net/littielucky/article/details/111350348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [unity粒子特效-实现下雨效果](https://blog.csdn.net/a201808064823/article/details/111572358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值