为什么我的三.js对象在我告诉它时不会移动?



我正在尝试创建一个三.js块,当我按下不同的键时它会移动。我已经成功地创建了一个功能性eventListener,使用console.log()进行检查,并且也成功地移动了我的块,但是当我将两者放在一起时,块不会移动。我还尝试使用成功的块移动代码并循环它,以便我可以看到它按命令移动,并且块已__dirtyPosition设置为 true,但即使这样也没有移动它。

我是一个相当有经验的程序员,并且创建了许多像这样的工作程序,但由于某种原因,它就是不起作用,即使我将其与我的工作程序进行了比较,没有任何不同。

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

代码顶部:

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

代码底部:

renderer.render(scene, camera);

我错过了什么吗?

多亏了@Radio,我意识到我完全忘记了循环渲染器。 我刚刚改变了这个

renderer.render(scene, camera);

function animate() {
renderer.render(scene, camera);
setTimeout(animate, 20);
}
animate();

最新更新