2017-07-25 75 views
0

我想创建一个three.js所块当我按不同的键,将移动。我已经成功与创建功能eventListener,使用console.log()检查,并且也得到了成功的移动我的块,但是当我把两者一起,块不动。我已经使用成功的块移动代码和循环,所以我可以看到它移动命令也试过,块具有__dirtyPosition设置为true,但即使如此,也不能移动它。当我告诉它时,为什么我的Three.js对象不会移动?

我是一个相当有经验的程序员,并创造了这样一个许多工作程序,但由于某些原因,它只是不工作,即使我已经将它比作我的工作程序并没有什么不同了。

var block1 = new Physijs.ConvexMesh(
    new THREE.CubeGeometry(5, 5, 5), 
    new THREE.MeshBasicMaterial({color: 0x444444}) 
); 
block1.position.set(0, 0, 0); 
block1.__dirtyPosition = true; 
scene.add(block1); 

eventListener

document.addEventListener("keydown", function(event) { 
    var code = event.keyCode; 
    //a, s, w, d respectively 
    if (code === 65) block1.translateX(-3); 
    if (code === 83) block1.translateY(-3); 
    if (code === 87) block1.translateY(3); 
    if (code === 68) block1.translateX(3); 
}); 

renderer

顶级代码:

renderer.render(scene, camera); 

var renderer = new THREE.CanvasRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 
document.body.appendChild(renderer.domElement); 

代码的底部

我错过了什么?

+0

显示它的代码 – frozen

+0

确保块1对象是在你的事件监听功能访问。 – stweb

+1

你有渲染循环吗?你问场景渲染()? – Radio

回答

0

感谢@Radio,我才意识到我已经完全忘记了循环的渲染器。 我只是改变了这种

renderer.render(scene, camera); 

function animate() { 
    renderer.render(scene, camera); 
    setTimeout(animate, 20); 
} 
animate(); 
相关问题