1

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

现在我有一个对象跟随我的鼠标。当我的船的 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);

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

4

0 回答 0