#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
объект, чтобы сделать ее чище).