2017-01-16 170 views
0

與其他許多類似問題一樣,我想根據其旋轉將對象向前移動three.js。所不同的是,我不能使用object.translateZ。這是因爲我正在使用物理模擬器,如果我更新對象就會搞亂。以下是我的問題的一個示例fiddle。隨意玩我的小提琴,並添加您的更新版本到您的答案。Three.js將對象向前移動而不需要translateZ

我想通過更新mesh.position.xmesh.position.z根據mesh.rotation.y向前移動多維數據集。

要記住,我有時會意識到,three.js旋轉有時使用mesh.rotation.y訪問它們時有點奇怪。

謝謝!

回答

2

我會建議使用mesh.getWorldDirection()來獲取您想要移動網格的方向。然後你可以用一個標量乘它來調整移動速度。

direction = mesh.getWorldDirection(); 

mesh.position.add(direction.multiplyScalar(moveSpeed)); 

小提琴:https://jsfiddle.net/k1swrxjr/1/

祝你好運!

+1

而是這樣做:'mesh.getWorldDirection(direction);'方法每隔一個實例化一個新的'Vector3'它被稱爲時間,否則。查看https://jsfiddle.net/k1swrxjr/6/中的更改 – WestLangley

0

要將您的網簡單的增加中,你希望你的網去你的動畫()函數而不是初始化函數的位置值,舉例如下:

function animate() { 
     mesh.position.x += 0.1; 
     requestAnimationFrame(animate); 
     renderer.render(scene, camera); 
    } 

此示例代碼將增加每次運行animate()時,將網格的x位置減少0.1。

+0

我當時要求物體朝着它所面對的方向移動,這是我隨機爲例 –