Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js-如何反复从左向右移动球_Javascript_Animation_Three.js_Rendering - Fatal编程技术网

Javascript Three.js-如何反复从左向右移动球

Javascript Three.js-如何反复从左向右移动球,javascript,animation,three.js,rendering,Javascript,Animation,Three.js,Rendering,我想在3.js中将一个球向右移动,然后它将移动到起始位置,然后重复向右移动 var geometry = new THREE.SphereGeometry( 5, 32, 32); var material = new THREE.MeshPhongMaterial( {specular: "#fdfb57", color: "#d8d613", emissive: "#6b6a0d", side: THREE.DoubleSide} ); var ball = new THREE.Mesh(

我想在3.js中将一个球向右移动,然后它将移动到起始位置,然后重复向右移动

var geometry = new THREE.SphereGeometry( 5, 32, 32);
var material = new THREE.MeshPhongMaterial( {specular: "#fdfb57", 
color: "#d8d613", emissive: "#6b6a0d", side: THREE.DoubleSide} );
var ball = new THREE.Mesh(geometry, material);

var render = function () {
    requestAnimationFrame( render );
    renderer.render(scene, camera);
    renderer.setSize(window.innerWidth, window.innerHeight);

// What programming code I have to put on here? 
};

render();   

但是我应该如何实现球的移动呢?

可以通过在每一帧上更改球的位置,也可以使用类似于库的方法来获取要在两个点之间移动的运动路径

对于简单的从左到右反向重复动画,只需调整位置即可

尝试将其粘贴到:

var geometry=新三种。球墨法(5,32,32);
var material=新的3.MeshPhongMaterial({镜面反射:#fdfb57),颜色:#d8d613,发射:#6b6a0d,侧面:3.DoubleSide});
var ball=新的三个网格(几何体、材质);
变量dxPerFrame=1;//如何在单个帧中移动
场景。添加(球);
onRender=function(){
ball.position.x+=dxPerFrame;//移动球
如果(ball.position.x>100)dxPerFrame=-1;//如果我们太右,向左移动
如果(ball.position.x<-100)dxPerFrame=1;//如果我们离得太远,请再次向右移动
};
//Alt+Return运行代码
var geometry = new THREE.SphereGeometry( 5, 32, 32);
var material = new THREE.MeshPhongMaterial( {specular: "#fdfb57", color: "#d8d613", emissive: "#6b6a0d", side: THREE.DoubleSide} );
var ball = new THREE.Mesh(geometry, material);
var dxPerFrame = 1; // how to move in a single frame

scene.add(ball);

onRender = function() {
  ball.position.x += dxPerFrame; // move ball
  if(ball.position.x >  100) dxPerFrame = -1; // if we're too far right, move towards the left
  if(ball.position.x < -100) dxPerFrame =  1; // if we're too far left, move towards the right again
};

// Alt+Return run the code