나는 브레이크 아웃을 다시 시도하고 있는데, 때로는 공이 타일을 완전히 뛰어 넘거나 잘못 튀어 나온다. 내 생각에 문제는 볼이 위쪽, 아래쪽, 또는 측면에서오고 있는지 여부를 감지하는 코드가 공의 "계단"크기가 볼의 내부에 도착할 수 있다는 사실을 설명하지 않는다는 것입니다. 타일. 이러한 버그가 발생하지 않도록 시도한 유일한 방법은 단계 크기를 줄이는 것이지만, 그 방법으로 볼을 원하는 것보다 느리게 움직일 수 있습니다. 그렇다면 볼의 속도를 동일하게 유지하면서 충돌면을 정확하게 감지 할 수 있습니까?어떻게 충돌의 측면을 감지 할 수 있습니까?
Vector2 ballCenter = new Vector2();
Vector2 tileCenter = new Vector2();
ballCenter = ball.getHitbox().getCenter(ballCenter);
tileCenter = tiles.get(i-1).getHitbox().getCenter(tileCenter);
if(ballCenter.y-ball.sprite.getHeight()/2>tileCenter.y){
ball.velocity.y = Math.max((-1*ball.velocity.y)+2,10);
}
else if(ballCenter.y+ball.sprite.getHeight()/2<tileCenter.y){
ball.velocity.y = Math.max((-1*ball.velocity.y)-1,-10);
}
else
ball.velocity.x *=-1;
현재 위치와 이전 위치를 유지하면 "현재 위치가 벽돌 위에 있고 이전 위치가 아래에 있었으면 공이 위쪽으로 움직입니다."등과 같이 말할 수 있습니다. 그리고 나서 공이 벽돌에 처음 닿은 위치와 결과 경로를 계산하기 위해 어떤 각도로 계산할 수 있습니다. –