0
我正在尝试为我的OpenGL应用程序创建碰撞。OpenGL中的3D碰撞
我有代码,成功测试我的相机是我的平台对象内:
void checkInsidePlatform()
{
float halfW = gymPlatform -> getW()/2;
float Height = gymPlatform -> getH();
float halfD = gymPlatform -> getD()/2;
float platformRight = gymPlatform -> getX() + halfW + 1;
float platformTop = gymPlatform -> getY() + Height + 1;
float platformFront = gymPlatform -> getZ() - halfD - 1;
if(testPlatformCollision())
{
//Below code doesnt work (NEED HELP HERE)
if(myCamera -> curPos -> x < platformRight)
{
myCamera -> curPos -> platformRight;
}
if(myCamera -> curPos -> z > platformFront)
{
myCamera -> curPos -> platformFront;
}
if(myCamera -> curPos -> y < platformTop)
{
myCamera -> curPos -> platformTop;
}
}
}
bool testPlatformCollision()
{
float halfW = gymPlatform -> getW()/2;
float Height = gymPlatform -> getH();
float halfD = gymPlatform -> getD()/2;
float platformLeft = gymPlatform -> getX() - halfW - 1;
float platformRight = gymPlatform -> getX() + halfW + 1;
float platformTop = gymPlatform -> getY() + Height + 1;
float platformFront = gymPlatform -> getZ() - halfD - 1;
float platformBack = gymPlatform -> getZ() + halfD + 1;
if((myCamera -> curPos -> x > platformLeft) && (myCamera -> curPos -> x < platformRight))
{
if((myCamera -> curPos -> z > platformFront) && (myCamera -> curPos -> z < platformBack))
{
if(myCamera -> curPos -> y < platformTop)
{
return true;
}
}
}
return false;
}
但现在我卡住了。如果它进入内部,我不确定如何将相机移出平台。 如果摄像机在平台内,则执行所有3个测试。
只是RandyGaul的一个很好的补充。您也可以诀窍预先计算平台的中心。然后执行(camera-> pos - platform-> pos)并找到绝对最大的分量(x,y或z)并将相机移动到该轴上。 – Trax
完美!很棒。非常感谢! – Split