如何在Three.js / WebGL中创建对象边界?

时间:2013-04-13 23:50:43

标签: graphics 3d three.js webgl

我是图形新手,想知道如何为我的游戏创建对象边界。

现在我的鼠标后面有一个对象。当我的船具有rotation.z为0时,这适用于我的边界。但是,当我旋转船时,边界有奇怪的行为。

我试图获得船的世界位置,只需检查x和y边界。然而,当我旋转时,世界位置似乎给了我不同的x和y。我怎么能够 开始创建一个适用于我船舶所有旋转的边界。

这是我的游戏(为了帮助而关闭了碰撞):http://www.cis.gvsu.edu/~chaua/CS371/WebGLProject/home.html

当你不旋转船时,我会发生这种行为。 用左/右鼠标旋转船只。

相关代码段(在渲染循环中):

if(mouseLeftDown)
        ship.rotation.z += leanSpeed;
if(mouseRightDown)
        ship.rotation.z += -leanSpeed;
....
....

targetX = ((lastMouseX / window.innerWidth) * 2 - 1) * 90;
targetY = -((lastMouseY / window.innerHeight) * 2 - 1) * 60;

var worldPosition = (new THREE.Vector3()).getPositionFromMatrix(ship.matrixWorld);

if(worldPosition.x + targetX <= (randSpawnWidth/2)-500 && worldPosition.x + targetX >= -(randSpawnWidth/2)+500)
    ship.translateX(targetX);
if(worldPosition.y + targetY <= (randSpawnHeight/2)-500 && worldPosition.y + targetY >= -(randSpawnHeight/2)+500)
    ship.translateY(targetY);

我将不胜感激任何帮助。谢谢!

0 个答案:

没有答案