은 내가에서 AABB 충돌 감지를 구현하기 위해 노력하고 차원의 OpenGL 게임을 작동 충돌 감지 코드되지 않습니다OpenGL은 2D 충돌 감지 여기
boolean collisionX = position.x + size.x + dx >= collision.position.x && collision.position.x + collision.size.x >= position.x + dx;
boolean collisionY = position.y + size.y + dy >= collision.position.y && collision.position.y + collision.size.y >= position.y + dy;
return collisionX && collisionY;
크기에 내가이 계산을 사용하고 있습니다 왜냐하면 이러한 스프라이트 중 일부는 텍스처 아틀라스에서 가져온 것이기 때문입니다. 텍스처 아틀라스의 높이와 폭이 동일하기 때문에이 2^X 정사각형이므로
size.x = pixelWidth * scaleX/modelTexture.spriteWidth,
size.y = pixelHeight * scaleY/modelTexture.spriteWidth
는 I는 모두 modelTexture.spriteWidth를 사용한다.
PixelWidth 및 PixelHeight은 텍스처에있는 이미지의 픽셀 크기이며 나로 계산됩니다.
내가 잘못 생각하면 문제가 이러한 계산으로 인해 발생할 수 있다고 생각합니다. 저에게 알려주세요.
그러나 모든 Sprite의 경계 상자가 가운데에서 시작하여 오른쪽 상단으로 확장되는 것처럼 충돌 감지가 잘못된 위치에서 발생하는 것처럼 보입니다. 나는 -size/2f와 같은 변위 벡터를 사용하여이를 설명하려고 노력했다. 그러나 불행하게도 그것은 아무것도 바뀌지 않았습니다. 여기
이 표시되지 않습니다 충돌의 예 제대로 alligned 수있다 :당신은 문제가 스프라이트/객체의 근원이 될 수 있다고 생각하십니까? 어느 쪽이 중심에 있습니다. 그렇다면 원점을 어떻게 왼쪽 상단으로 설정합니까?
기본 방법 중 하나를 시도, 예를 들어, 'boolean intersects = new Rectangle (x1, y1, width1, height1) .intersects (새로운 Rectangle (x2, y2, width2, height2));'java.awt'에서부터 어떻게되는지보기 –
크기에 따라 순위를 조정해야 할 것입니까? –
'position.x + size.x + dx> = collision.position.x && collision.position.x + collision.size.x> = position.x + dx;'여기서'||'가되어서는 안됩니다. ? (Y와 같음) 코드를 읽는 직관, 나는 수학을 수행하지 않았습니다. – Zouch