내 게임에서 직사각형을 사용하여 충돌 감지를 구현하려고하지만 작동하지 않는 것 같습니다.충돌 감지 Libgxx 사각형
글 머리 기호는 각 프레임마다 간격을 두어 화면을 가로 질러 이동할 때 업데이트됩니다. 명백하게 나는 여기에서 들었다. collisionbox는 그것과 함께 움직인다. 나는이 값을 각 인스턴스에 대해 datafield Rectangle을 설정하는 sprite.getBoundingBox()
을 사용하여 이것을 얻는다.
두 명의 Arraylists가 있습니다. 하나는 Monsters 인스턴스이고 하나는 Bullets 인스턴스입니다. 그들은 모두 그들과 관련된 collisionRectangles를 가지고 있습니다.
총알이나 몬스터 arraylist에 뭔가있는 한 내 기본 렌더링 루프의 각 프레임에서 checkCollisions()
메서드를 호출합니다.
/*this handles collisions between bullets and enemies*/
public static void checkCollisions(){
for (int i = 0; i < Main.currentBullets.size(); i++){
for (int k = 0; k < Main.currentMonsters.size(); k++){
if (Intersector.overlaps(Main.currentBullets.get(i).collisionBoxBullet,
Main.currentMonsters.get(k).collisionBoxMonster)){
System.out.println("Boom headshot");
}
}
}
중복 될 때마다 붐 헤드 샷을 수행해야합니까? 대신에 항상 사실로 평가되는 것 같습니다.
왜 계속해서 사실인지 평가하고 붐 헤드 샷을 쓰고 있습니까?
'sprite.getBoundingRectangle()'메서드는'Sprite'를위한'BoundingRectangle'을 생성합니다. 즉, 그것은 'Sprite'를 움직일 때 업데이트되는 참조가 아닙니다. 그래서'collisionBoxBullet'과'collisionBoxMonster'를 최신 상태로 유지하려면 매 프레임마다'sprite.getBoundingRectangle'을 호출해야합니다. 또한 '총알'과 '괴물'은 금식하지 않아서 서로를 "터널링"하지 않도록하십시오! – Springrbua
대단히 감사합니다. 매번 경계 사각형을 업데이트하지만 항상 "붐 헤드 샷"을 말하고 실제로 평가합니다. 조건부 평가가 참인 이유는 무엇입니까? –
말하기가 쉽지 않습니다 ...'if' 조건 앞에'System.out.println()'을 시도하고 2 개의 collisionBox를 출력하십시오. 그런 다음 몇 가지 검사 결과를 보여주십시오. – Springrbua