как реализовать обнаружение столкновения между мячом и квадратом с боковых краев? - PullRequest
0 голосов
/ 08 июля 2020

приведенный ниже код обнаруживает столкновение между двумя объектами, но он меняет направление только вдоль оси y шара. Может кто-нибудь, пожалуйста, помогите, как реализовать боковое столкновение? Например, если он ударяется о боковые края шара направление должно изменяться только по оси x.

bricks.forEach(column=>{
        column.forEach(brick=>{
            if (brick.visible){
                if(ball.x-ball.size>brick.x && ball.x+ball.size<brick.x+brick.w && ball.y+ball.size>brick.y && ball.y-ball.size<brick.y+brick.h)
                    {
                        ball.dy*=-1;
                        brick.visible=false;
                    }
            }
        })
    })

1 Ответ

0 голосов
/ 08 июля 2020

Я добавил несколько вещей, но это дает плохой результат, так как при обработке отскока от краев. Можно ли дать несколько рекомендаций по лучшему способу обработки столкновений?

 bricks.forEach(column=>{
        column.forEach(brick=>{
            if (brick.visible){
                if(ball.x-ball.size>brick.x && ball.x+ball.size<brick.x+brick.w && ball.y+ball.size+ball.speed>brick.y && ball.y-ball.size+ball.speed<brick.y+brick.h)
                    {
                        ball.dy*=-1;
                        brick.visible=false;
                    }
                if(ball.y-ball.size>brick.y && ball.y+ball.size<brick.y+brick.h && ball.x+ball.size+ball.speed>brick.x && ball.x-ball.size+ball.speed<brick.x+brick.w)
                    {
                        ball.dx*=-1;
                        brick.visible=false;
                    }
            }
        })
    })
}
...