gpt4 book ai didi

javascript - 如何为Cube Three.js制作 float 效果

转载 作者:行者123 更新时间:2023-12-04 13:24:04 28 4
gpt4 key购买 nike

所以我试图在three.js中制作一个Boxgeometry float ,我尝试用setTimeout来做但它没有用,这是我尝试的。

function animate() {
requestAnimationFrame( animate );

cube.position.y += 0.01
setTimeout(function(){
cube.position.y += -0.02
}, 10000);

renderer.render( scene, camera );
}
它只会上下移动,看起来不像是漂浮的。
如何为立方体制作 float 动画?

最佳答案

通过使用三 Angular 函数,如 sin()您可以实现基本的 float 效果。

let camera, scene, renderer;
let clock, mesh;

init();
animate();

function init() {

camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 0.01, 10);
camera.position.z = 1;

scene = new THREE.Scene();

clock = new THREE.Clock();

const geometry = new THREE.BoxGeometry(0.2, 0.2, 0.2);
const material = new THREE.MeshNormalMaterial();

mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

}

function animate() {

requestAnimationFrame(animate);

const time = clock.getElapsedTime();

mesh.position.y = Math.cos( time ) * 0.2;

renderer.render(scene, camera);

}
body {
margin: 0;
}
<script src="https://cdn.jsdelivr.net/npm/three@0.134.0/build/three.min.js"></script>

根据您如何参数化计算以及如何组合三 Angular 函数,您可以实现完全不同的动画。
还可以考虑使用 GSAP 或 Tween.js 之类的动画库来轻松访问各种缓动功能。

关于javascript - 如何为Cube Three.js制作 float 效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69783512/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com