Проблема с столкновениями ограничивающих рамок в pygame [дубликат]Python

Программы на Python
Ответить
Anonymous
 Проблема с столкновениями ограничивающих рамок в pygame [дубликат]

Сообщение Anonymous »

Я пытаюсь создать игру с разбиением кирпичей, похожую на игру с разбивателем блоков Google, и у меня возникают проблемы с столкновением мяча с кирпичами. В большинстве случаев он игнорирует столкновение сбоку блока и входит внутрь него.
закомментированный код — это еще один способ проверки столкновений, но он также не работает должным образом.
как мне правильно проверить, сталкивается ли мяч с боковыми сторонами, с нижней или с верхней частью кирпич?
def step(self,ball):

myrect = g.Rect(self.x,self.y,self.width,self.height)
ballrect = g.Rect(ball.x,ball.y,ball.size,ball.size)

if myrect.colliderect(ballrect) and ball.collidecooldown < 1:
ctop = ball.y - myrect.bottom
cbottom = self.y - ballrect.bottom
cleft = ball.x - myrect.right
cright = self.x - ballrect.right

cy = abs(min(ctop,cbottom))
cx = abs(min(cleft,cright))

if cy < cx:
ball.vel[1]*=-1
else:
ball.vel[0]*=-1

self.alive = False
ball.collidecooldown = 1

"""
ctop = ballrect.bottom > myrect.top and ballrect.bottom < myrect.bottom
cbottom = ballrect.top < myrect.bottom and myrect.top > ballrect.bottom
cright = ballrect.left < myrect.right and ballrect.left > myrect.left
cleft = ballrect.right > myrect.left and ballrect.right < myrect.right

if ctop or cbottom:
ball.vel[1]*=-1
if cright or cleft:
ball.vel[0]*=-1

self.alive = False
ball.collidecooldown = 1
"""
Ответить

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

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

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

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

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