Pygame - Другой вопрос о столкновении! - PullRequest
0 голосов
/ 01 мая 2009


Я делаю Pygame, в основном, "Breakout".
Я использую столкновения и хочу простой способ получить разные эффекты отскока для разных сторон одного прямоугольника.
То, что у меня сейчас есть для столкновения шара с битой, таково:
"точка" = шар; "летучая мышь" = летучая мышь; так что вы все понимаете.

if dot.rect.colliderect(bat.rect):<br>
 dot.dy *= -1

Мне бы хотелось, чтобы что-то взаимодействовало с каждой стороной, поэтому могло бы обратить значение self.dx мяча, когда оно касается стороны летучей мыши, и обратить значение self.dy только тогда, когда оно достигло вершины. *

Спасибо !!! : D

Ответы [ 2 ]

0 голосов
/ 01 мая 2009

СПАСИБО! Это совсем не заняло много времени. Для всех остальных, вот код, который я использовал в качестве руководства:

если dot.rect.colliderect (bat.rect): если 570

Отлично работает. Единственная проблема: при столкновении с Python объекты переходят в другие объекты чуть-чуть, прежде чем реагируют на столкновение. Таким образом, вы не можете установить предельные значения для оператора if для точного измерения, потому что, если он достигнет вершины с этими точными измерениями, он установит первый оператор if и по-королевски облажается. Но это прекрасно работает для простоты.

Еще раз спасибо McWafflestix! : D

0 голосов
/ 01 мая 2009

То, что вы хотите, - это вторая проверка (в пределах if), которая проверяет, совпадает ли координата Y точки с координатой Y летучей мыши (то есть, мяч попал в летучую мышь, когда мяч находился на той же высоте, что и летучая мышь). , что означает, что он должен был ударить со стороны), затем повернуть вспять скорость X; в противном случае вы попали в летучую мышь на вершине, поэтому поменяйте скорость Y.

Это не совсем правильно, но это поможет вам.

...