функция отскока в pygame

#python #pygame #bounce

Вопрос:

 def bounce(self):
        self.velocity[0] = -self.velocity[0]
        self.velocity[1] = randint(-10,10)
 

Эй, я хотел бы перекодировать эту функцию отскока, но я понятия не имею, как мне это сделать?

Комментарии:

1. Что именно вы подразумеваете под «перекодированием этой функции отскока»?

2. Вы имеете в виду отскок с гравитацией, при котором каждый последующий отскок становится меньше, как мяч, отскакивающий от земли?

3. мы также have no clue понимаем, что вы имеете в виду. Какого результата вы ожидаете?

4. Извините за недостаточную ясность, но я хочу добиться того, чтобы, когда мяч отскакивает от стен, он должен отскакивать случайным образом

Ответ №1:

Согласно физике, лучшим и наиболее естественным результатом было бы не меняться self.velocity[1] . Предполагая, что self.velocity[0] это находится на оси X и self.velocity[1] находится на оси Y, тогда, если вы врезаетесь в любую стену на оси X (слева или справа), self.velocity[1] это не должно измениться, просто скорость на оси X должна измениться. В случае, если вы захотите сделать то же самое для столкновения по оси Y, вам следует просто сделать то же самое, но self.velocity[1] вместо self.velocity[0] этого .

Диаграмма отскока мяча, который сохраняет тот же угол:

Диаграмма отскока мяча

С другой стороны, если вы хотите, чтобы он отскакивал в случайном направлении (что выглядело бы не так естественно), ваша текущая функция великолепна (хотя, если вы используете pygame, вы можете преобразовать self.velocity ее в Vector2 объект, чтобы сделать ее чище).