public void update() {
speedY = bg.getSpeedY()/2;
tileY += speedY;
r.set(tileX, tileY, 50, 48);
// Collision with cycle here:
if (tileY > 480) {
r = null;
}
if (tileY < 480) {
checkCollision();
}
}
private void checkCollision() {
if (type != 0) {
boolean val = Rect.intersects(Cycle.rect, r);
if (val) {
test = true;
}
}
}
디버거를 사용하여 모든 직사각형이 올바르게 업데이트되고 Cycle.rect가 올바른 직사각형 위치를 반환한다고 결정했습니다. 직사각형이 첫 번째 검사에서 교차하는 경우 제대로 작동합니다. 그러나 업데이트가 실행되면 intersects는 true를 반환하지 않습니다. 왜 이것이 일어날 수 있습니까? 나는 디버깅을 돕기 위해서만 boolean val을 사용했다.직사각형이 첫 번째 검사에서 교차하는 경우 직사각형 만 간섭하는지 확인
가 나는 사각형이 교차 될 것으로 판단 두 값이 기록되지 않지만 :
R : 02-24 23 : 32 : 50.762 : V/사각형 (16624) : 사각형 (50 314 - 50 48) Cycle.rect : 02-24 23 : 32 : 50.762 : V/Rect (16624) : Rect (49,329-100,100)
그것은 단지이 정보와 답변을 조금 어렵다. 아마'type'은 0입니까? 아마'Cycle.rect'는'r'과 정말로 교차하지 않을까요? 'Cycle.rect'와'r'의 각 위치를 확인하십시오. 또한, 'tileY' 값을 로깅하는 것이 도움이 될 수 있습니다. –
tileY를 로깅하는 대신 두 개의 직사각형을 기록하여 교차하는지 확인했습니다. 유형 검사가 기록되지 않았으므로 유형이 0이 아닌 것으로 알고 있습니다. 02-24 23 : 32 : 50.762 : V/Rect (16624) : Rect (50, 314 - 50, 48) 02-24 23 : 32 : 50.762 : V/Rect (16624) : Rect (49, 329 - 100, 100) 이 두 직사각형은 교차해야합니까? – seanEP
내 대답을 확인하십시오. 약간의 실험을 한 후, 당신의 맨 아래쪽 값을 바꾸면, 나는 당신의'Rect' 교차를 얻습니다. –