gsap实现可调参数的鼠标跟随粒子动画效果代码
代码语言:html
所属分类:粒子
代码描述:gsap实现可调参数的鼠标跟随粒子动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { margin: 0; cursor: none; overflow: hidden; } #panel { width: 100%; height: 100vh; background-color: #000; } canvas { display: block; } </style> </head> <body translate="no"> <div id="panel"> <canvas id="magic-dust"></canvas> </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gsap.3.9.1.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/Physics2DPlugin3.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script> <script> (() => { const isMobile = window.innerWidth < 768; const params = { ambientParticleCount: 10000, ambientMinScale: 1, ambientMaxScale: 2, ambientVelocityMin: 1, ambientVelocityMax: 20, ambientTweenDurationMin: 10, ambientTweenDurationMax: 20, ambientEase: "power1.inOut", ambientFadeInDurationMin: 1, ambientFadeInDurationMax: 5, ambientOpaqueTimeMin: 2, ambientOpaqueTimeMax: 2, ambientFadeOutDurationMin: 1, ambientFadeOutDurationMax: 5, ambientMovementDelayMin: 0, ambientMovementDelayMax: 10, ambientMinTravel: 20, ambientMaxTravel: 100, ambientAngleChange: Math.PI / 2, ambientCurveOffsetMin: -50, ambientCurveOffsetMax: 50, mouseParticleCount: 8, mouseMinScale: 1, mouseMaxScale: 5, mouseVelocityMin: 10, mouseVelocityMax: 60, mouseGravity: 10, mouseTweenDurationMin: 0.3, mouseTweenDurationMax: 2.1, mouseEase: "power2.inOut", mouseSpawnWidth: 20, mouseSpawnHeight: 50, mouseRandomAngle: false, // false: use fixed angle; true: random mouseFixedAngle: 5, // fixed angle when toggle is off rippleEffectRadius: 400, rippleDisplacementMin: 5, rippleDisplacementMax: 100, rippleRandomYOffset: 10, subtleRippleRadius: 0, subtleRippleDisplacementMin: 0, subtleRippleDisplacementMax: 0, subtleRippleRandomYOffset: 0, bloomIntensity: 1.5, backgroundWaveAmp: 0.35, backgroundIntensity: 20.0, bgTopColor: "#0A0011", bgBottomColor: "#000000" }; if (!isMobile && typeof dat !== "undefined") { const gui = new dat.GUI(); gui.domElement.style.zIndex = "1000"; const ambientFolder = gui.addFolder("Ambient Particles"); ambientFolder.add(params, "ambientParticleCount", 100, 50000, 1).name("Count").onFinishChange(resetAmbientParticles); ambientFolder.add(params, "ambientMinScale", 0.5, 10, 0.1).name("Min Scale"); ambientFolder.add(params, "ambientMaxScale", 0.5, 10, 0.1).name("Max Scale"); ambientFolder.add(params, "ambientVelocityMin", 0, 100, 1).name("Min Velocity"); ambientFolder.add(params, "ambientVelocityMax", 0, 100, 1).name("Max Velocity"); ambientFolder.add(params, "ambientTweenDurationMin", 1, 30, 0.1).name("Move Min Duration"); ambientFolder.add(params, "ambientTweenDurationMax", 1, 30, 0.1).name("Move Max Duration"); ambientFolder.add(params, "ambientEase").name("Move Easing"); ambientFolder.add(params, "ambientMovementDelayMin", 0, 5, 0.1).name("Move Min Delay"); ambientFolder.add(params, "ambientMovementDelayMax", 0, 5, 0.1).name("Move Max Delay"); ambientFolder.add(params, "ambientMinTravel", 10, 200, 1).name("Min Travel"); ambientFolder.add(params, "ambientMaxTravel", 10, 200, 1).name("Max Travel"); ambientFolder.add(params, "ambientAngleChange", 0, Math.PI, 0.01).name("Max Angle Change"); ambientFolder.add(params, "ambientCurveOffsetMin", -100, 0, 1).name("Min Curve Offset"); ambientFolder.add(params, "ambientCurveOffsetMax", 0, 100, 1).name("Max Curve Offset"); ambientFolder.add(params, "ambientFadeInDurationMin", 1, 5, 0.1).name("Fade In Min (s)"); ambientFolder.add(params, "ambientFadeInDurationMax", 1, 5, 0.1).name("Fade In Max (s)"); ambientFolder.add(params, "ambientOpaqueTimeMin", 1, 5, 0.1).name("Opaque Time Min (s)"); ambientFolder.add(params, "ambi.........完整代码请登录后点击上方下载按钮下载查看
网友评论0