2013-02-12 160 views
2

我剛剛開始查看Three.js,並且有關於對象移動的問題。在XNA/ShparDX中,您可以執行類似下面的代碼的操作,其中對象可以相對於其方向向前移動。所以如果物體向下看,這會使它下移。如果它向右看,它會向右移動。這個視頻的例子可以看到here,並且是頁面上的最後一個視頻。相對於Three.js中的對象旋轉向前移動

float speed = 0.15f; 
Vector3 velocity = objectMatrix.Forward * speed; 
objectMatrix *= Matrix.CreateTranslation(velocity); 

我曾嘗試以下,基於this answer。當我按下鍵來觸發它時,它什麼都沒做。

var STEP = 10; 
object.matrixWorld.identity(); 
object.matrixWorld.multiplySelf(three.Matrix4.translationMatrix(object.position.x, object.position.y, object.position.z + STEP)); 
object.updateMatrixWorld(); 

我一直沒有使用Three.js中提供的成員和函數來複制它。有人可以告訴我是否有可能嗎?謝謝。

回答

2
mesh.translateX(delta); 
mesh.translateY(delta); 
mesh.translateZ(delta); 

要繼續前進,請使用translateZ(delta)

如果你只是在學習,最好不要惹object.matrix,除非你真的知道你在做什麼。改爲設置positionrotationscale

+1

我絕對不是新的矩陣,但你的答案似乎工作雄辯。如果任何人有更好的補充,但是你看起來是正確的答案,我會留下一些問題。 – Dragonseer 2013-02-12 17:18:11