2017-07-25 73 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(); 
相關問題