我想製作一個遊戲,在3D平面上玩家可以與周圍的物體發生碰撞。我打算通過用無法輸入的不可見矩形包裹遊戲中的所有3D模型來進行碰撞。我寫了代碼來計算每個頂點的X,Y和Z的最小值/最大值,以查找每個頂點的最高點和最低點。我會如何將它變成一個矩形棱鏡?如何使用X,Y和Z頂點的最小/最大值計算矩形棱鏡
這裏是我到目前爲止的代碼:
public CollisionModel(List<Vector3f> vert) {
float xLow = 1000;
float xHigh = 0;
float yLow = 1000;
float yHigh = 0;
float zLow = 1000;
float zHigh = 0;
for(Vector3f v : vert) {
if(v.x > xHigh) {
xHigh = v.x;
} else if(v.x < xLow) {
xLow = v.x;
}
if(v.y > yHigh) {
yHigh = v.y;
} else if(v.y < yLow) {
yLow = v.y;
}
if(v.z > zHigh) {
zHigh = v.z;
} else if(v.z < zLow) {
zLow = v.z;
}
}
}
我想我很困惑你是什麼意思的頂點。你談論一個「頂點」就像它可以有最高點和最低點。不是頂點本身只是3D空間中的一個點嗎? – nhouser9
你還需要什麼?只需使用八個(x,y,z)組合作爲頂點。 – Bubletan
對不起,我不是很清楚,我試圖通過迭代頂點數組來找到最高和最低,以及最遠和最遠的背部以及3D模型的左右頂點。我想如果我能找到這些點,我可以在模型本身上創建一個矩形棱鏡。 –