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

Graphics 如何在Three.js/WebGL中创建对象边界?,graphics,3d,three.js,webgl,Graphics,3d,Three.js,Webgl,我是图形新手,想知道如何为我的游戏创建对象边界 现在我有一个物体跟着我的鼠标。当我的船旋转.z为0时,这适用于我的边界。但是,当我旋转船舶时,边界具有奇怪的行为 我试着得到飞船的世界位置,并简单地检查x和y边界。然而,当我旋转时,世界位置似乎给了我不同的x和y。我怎么能 继续创建一个适用于我船所有旋转的边界 这是我的游戏(为了帮助而关闭碰撞): 我喜欢的行为发生在你不旋转飞船的时候。 使用左/右鼠标旋转船舶 相关代码段(在渲染循环中): if(mouseLeftDown) 船舶旋转z+=倾斜速度

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

现在我有一个物体跟着我的鼠标。当我的船旋转.z为0时,这适用于我的边界。但是,当我旋转船舶时,边界具有奇怪的行为

我试着得到飞船的世界位置,并简单地检查x和y边界。然而,当我旋转时,世界位置似乎给了我不同的x和y。我怎么能 继续创建一个适用于我船所有旋转的边界

这是我的游戏(为了帮助而关闭碰撞):

我喜欢的行为发生在你不旋转飞船的时候。 使用左/右鼠标旋转船舶

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

if(mouseLeftDown)
船舶旋转z+=倾斜速度;
如果(鼠标右键向下)
ship.rotation.z+=-倾斜速度;
....
....
targetX=((lastMouseX/window.innerWidth)*2-1)*90;
targetY=-((lastMouseY/window.innerHeight)*2-1)*60;
var worldPosition=(新的THREE.Vector3()).getPositionFromMatrix(ship.matrixWorld);
如果(worldPosition.x+targetX=-(随机宽度/2)+500)
translateX船舶(targetX);
如果(worldPosition.y+targetY=-(高度/2)+500)
运输船(targetY);

我将感谢任何帮助。谢谢

我想出了一个解决办法。我不允许在翻译之前检查未来的位置是否超出范围,而是允许在任何时候进行翻译。在平移之后,我检查船舶是否超出边界,如果超出边界,则将其移回最后一个入界位置。这会在到达边界时产生一点不稳定的效果,但会确保船只不能离开该区域。
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);