Невозможно правильно определить, на какой стороне прямоугольника происходит столкновение в pygamePython

Программы на Python
Ответить
Anonymous
 Невозможно правильно определить, на какой стороне прямоугольника происходит столкновение в pygame

Сообщение Anonymous »

Я делаю игру, разбивающую блоки (здесь репозиторий на github), и у меня возникли проблемы со столкновением мяча с блоками; Иногда, когда мяч ударяется о блок под определенным углом сверху/снизу, он обнаруживает столкновение справа/слева и портит свою траекторию, особенно на более высоких скоростях
вот код столкновения (строка 144)

Код: Выделить всё

if myrect.colliderect(ballrect) and ball.killcooldown < 1:
cbot = abs(myrect.bottom - ballrect.top) #collision on the bottom of the brick
ctop = abs(myrect.top - ballrect.bottom) #collision on top
cright = abs(myrect.right - ballrect.left) #collision on the right
cleft = abs(myrect.left - ballrect.right) #collision on the left

cy = min(ctop,cbot)
cx = min(cleft,cright)

if cy < cx:
ball.vel[1]*=-1 #flip y speed
else:
ball.vel[0]*=-1 #flip x speed

self.alive = False
ball.killcooldown = 2
как правильно проверять наличие столкновений (особенно на высоких скоростях)?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»