Две части:
- движение в вертикальном направлении
регулируется уравнением второго порядка,
как d = 1 / 2at & sup2; . Для Земли, из
Конечно, а = 32 фут / сек & sup2; но
вам придется вертеть
константы.
- Когда карта достигает края, как
«рекурсивный» говорит, скорость
вектор умножается в -1 раз
компонент, нормальный к поверхности. Если
Вы хотите, чтобы это хорошо отскочил к
остановись, сделай -1 немного
меньшее значение, например -0,9.
Анимируйте его, обновляя и перерисовывая карту несколько раз в секунду, каждый раз меняя положение карты. Самый простой способ - это вычислить что-то вроде (псевдо-Python):
vel_x = # some value, units/sec
vel_y = # some value, units/sec
acc_x = # some value in units/sec^2
acc_y = # some value in units/sec^2
while not_stopped():
x = x+vel_x
y = y+vel_y
# redraw the card here at new position
if card_collided():
# do the bounce calculation
vel_x = x + (0.5 * acc_x) # 1st derivative, gives units/sec
vel_y = y + (0.5 * acc_y)
Пока карточки остаются четырехугольными со сторонами, вы сталкиваетесь со сторонами, когда расстояние между центром карточки и стеной составляет 1/2 ширины или высоты, в зависимости от ситуации.