HTML5开发实例-ThreeJs实现粒子动画飘花效果代码分享


当前第2页 返回上一页

但是我需要给花瓣添加一个翻转的效果
我的实现思路是,2d元素在反转时其实相当于是将他的x轴的大小压缩
所以我给设置一个当前x轴的大小
和初始变形速度

1

2

particle.sizeX = particle.scale.x;

particle.xScaleSpeed = -0.08;

以下是所有粒子初始化的代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

for ( var i = 0; i < 30; i ++ ) {

    var textureLoader = new THREE.TextureLoader();

    var textureId = parseInt(Math.random()*10);

    var texture = textureLoader.load(textureList[textureId]);

    var particle = new THREE.Sprite( new THREE.SpriteMaterial( { map: texture } ) );

 

    particle.position.x = Math.round(Math.random() *winHeight* 1000)%200 +120;

    particle.position.y =Math.round(Math.random() *winHeight* 10000)%100 +60;

    particle.position.z = Math.random() * 3 - 30;

    particle.scale.x = particle.scale.y = Math.round(Math.random() * 50)%5+10 ;

    particle.sizeX = particle.scale.x;

    particle.xScaleSpeed = -0.08;

 

    particle.speed = Math.round(Math.random()*10)/50;

    particles.push(particle);

    scene.add( particle );

}

创建完粒子后
创建canvasRender

1

2

3

4

5

renderer = new THREE.CanvasRenderer({alpha:true});

renderer.setClearColor("#ffffff",0);

renderer.setPixelRatio( window.devicePixelRatio );

renderer.setSize( window.innerWidth, winHeight );

container.appendChild( renderer.domElement );

因为准备让花瓣从左上方往右下飘落,所以每次渲染画面的时候需要将花瓣往右下偏移

1

particles[i].position.x+=particles[i].speed;

这个速度是我在创建粒子时随机生成的,为的是让花瓣每一片的速度不同

1

particles[i].position.y-=particles[i].speed+0.1;

给y轴上也在每次渲染的时候增加一个偏移量,
因为这个效果需要在竖屏上展示,
所以y轴速度比x轴快一些效果会更好

1

particles[i].scale.x += particles[i].xScaleSpeed;

然后对粒子的形状在每次渲染的时候增加一个变形量

1

2

3

4

5

6

if(particles[i].scale.x <-particles[i].sizeX){

    particles[i].xScaleSpeed = 0.08

}

if(particles[i].scale.x >=particles[i].sizeX){

    particles[i].xScaleSpeed = -0.08

}

需要模拟花瓣翻转的效果,当当前变形量超过原先尺寸时,变形方向改为相反方向(本来变大改为变小)

1

2

3

4

5

6

if(particles[i].scale.x <0.3&&particles[i].scale.x >0){

    particles[i].scale.x=-0.3

}

if(particles[i].scale.x >-0.3&&particles[i].scale.x <0){

    particles[i].scale.x=0.3

}

到这里我们就完成了粒子的飘落+翻转的动态。
我们还需要在粒子超出效果展示区域时,把粒子重新赋予一个初始位置

1

2

3

4

5

6

if(particles[i].position.y<-100||particles[i].position.x>50|particles[i].position.z>150){

    particles[i].position.x = -Math.round(Math.random() *winWidth* 1000)%(winWidth);

    particles[i].position.y = Math.round(Math.random() *winHeight* 1000)%200 +120

    particles[i].position.z = Math.random() * 5 - 30;

    particles[i].speed=Math.round(Math.random()*10)/30;

}

这样,飘花瓣的效果,
就完成了

以上就是HTML5开发实例-ThreeJs实现粒子动画飘花效果代码分享的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

HTML5停止(暂停)当前播放的音频或视频的方法pause()

HTML5几种在客户端存储数据的实例详解

HTML5用什么数据库

h5页面如何调用摄像头代码分享

没有经验如何快速上手HTML5

html代码什么意思?

移动端h5页面尺寸大小

HTML5标准学习-文档结构详解

使用h5实现react拖拽排序组件的方法(附代码)

总结HTML5中新表单元素的使用方法及实例教程

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...