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