2014-11-11 2 views
1

Вот мой код обнаружения столкновений (обезжиренный при необходимости):Спрайтов встречные, но мяч не отскакивает в обратном направлении

if pygame.sprite.spritecollide(my_ball, ballGroup, False): 
    Ball.speed[1] = -Ball.speed[1] 
    print '1' 
Ball.move() 

if pygame.sprite.spritecollide(dad, ballGroup, False): 
    Ball.speed[1] = -Ball.speed[1] 
Ball.move() 

Программа говорит мне два спрайта встречные (print '1' в коде), поэтому шар в этом коде (так называемый Ball) должен «отскакивать» от другого спрайта в противоположном направлении. Но он просто проходит через спрайт, а не подпрыгивает. Почему это происходит?

+1

Это немного сбивает с толку. У вас есть класс под названием «Бал», а затем вы определяете «Бал» как экземпляр «Puck». Классы 'Ball' и' myBall' также идентичны. Я бы добавил еще некоторую отладку, например. напечатайте 'Ball.speed' при столкновении, но до и после его изменения. – elParaguayo

+0

Это потому, что оба класса предназначены для хоккейного весла первого игрока и хоккейного весла второго игрока. Они должны быть одинаковыми для справедливой игры. –

+0

Да, но это точно моя точка: если они идентичны, вы можете просто создать свои объекты 'my_ball' и' Dad', используя тот же класс «Ball». – elParaguayo

ответ

1

Если вы запустите сценарий, чтобы изображение просто перемещалось горизонтально, ваша шайба не имела вертикальной скорости. Это означает, что линия:

Ball.speed[1] = -Ball.speed[1] 

ничего не делает.

Если вы измените его на

Ball.speed[0] = -Ball.speed[0] 

то, что следует обратить горизонтальную скорость.

Отдельно ваша Ball.move() линия будет работать в два раза для каждого цикла ...

Смежные вопросы