나는 탁구를 만들고 있는데, 4 개의 벽에서 볼을 올바르게 반사하는 알고리즘을 작성하는 것이 정말 어렵다는 것을 알고 있습니다. (나중에 득점을 처리 할 것입니다. 서쪽 + 동쪽 측면은 목표가 될 것입니다.) 그래서 그 순간 공이 박스 주위로 튀어 나오길 원합니다.상자 충돌 감지 및 수신 거부
공이 벽에 부딪혔는 지 감지하는 것은 쉽지만 새로운 각도를 계산하는 데 문제가 있습니다.
이것은 내가 지금까지 가지고 올 한 것입니다 : 단지 충돌의 절반 작동, 정말 추한 모습
if(dstY == 0) {
// North wall
if(angle < 90) {
newAngle = angle + 90;
} else {
newAngle = angle - 90;
}
} else if(dstX == maxWidth) {
// East wall
if(angle < 90) {
newAngle = angle + 270;
} else {
newAngle = angle + 90;
}
} else if(dstY == maxHeight) {
// South wall
newAngle = angle + 90;
} else if(dstX == 1) {
// West wall
if(angle < 270) {
newAngle = angle - 90;
} else {
newAngle = angle - 270;
}
}
. 나는 이것이 정말로 간단해야하고 여러 번 해본 적이 있어야한다고 확신한다.
내 코드에서 dstX/dstY는 X/Y 대상 좌표입니다. 왼쪽 상단에서 X = 0 및 y = 0입니다.
어떻게 실패했는지 설명 할 수 있습니까? 공이 구석에서 정확히 맞으면 어떻게됩니까? –