Математика для игры в понг - PullRequest
1 голос
/ 20 марта 2011

Допустим, у меня есть угол ... какой разумный способ найти следующую точку, где будет находиться мяч?

Переменные: bSpeed, bAngle, Ball.x, Ball.y

Вы знаете, когда делаете c ^ 2 = a ^ 2 + b ^ 2 ... есть ли способ узнать, как долго может быть c ^ ​​2, и на самом деле "вытянуть" его, а затем использоватьскорость, чтобы пройти только часть этого ... с этим найдите a ^ 2 и b ^ 2, чтобы вы могли иметь топор и ай, чтобы нарисовать мяч ...

Спасибо заранее!(Кстати, мне не нужен код ... просто рассуждения и мудрость)

Ответы [ 5 ]

2 голосов
/ 20 марта 2011

Ваши 4 переменные по сути являются вектором, где вектор является мерой как направления, так и величины / скорости (то есть того, что вы представляли как bSpeed ​​и bAngle). Использование этого представления означает, что Ball.x и Ball.y просто становятся горизонтальными и вертикальными компонентами вектора.

Учитывая вектор с именем v1, мы можем вычислить движение по осям x и y следующим образом ...

xVelocityOfBall = v1.magnitude * cos(v1.angle);
yVelocityOfBall = v1.magnitude * sin(v1.angle);

GPWiki (Wiki по программированию игр) - отличный ресурс для любой математики / физики для разработки игр. Вот удобная ссылка на их векторную страницу

2 голосов
/ 20 марта 2011
delta_x = speed*cos(angle)
delta_y = speed*sin(angle)
new_x = x+delta_x
new_y = y+delta_y

и тогда вам нужно просто изменить скорость и угол мяча в случае удара по стене)

0 голосов
/ 20 марта 2011

Сначала преобразуйте угол в вектор, используя функции sin и cos.Это говорит вам об относительной скорости х и скорости мяча.Затем, чтобы узнать, насколько далеко зашел мяч, умножьте эти числа на скорость и время полета мяча.Наконец, добавьте в начальную позицию мяча.Это дает вам конечную позицию мяча.

В игре в понг, мяч может попасть в объект, и в этом случае вам необходимо скорректировать изменение скорости.

0 голосов
/ 20 марта 2011

Вы, вероятно, должны будете рассмотреть физику движения, которое перемещает игрок в понг.Например, если весло игрока ускоряется влево при соприкосновении с мячом, мяч должен будет ускориться в левом направлении.Это представляет передачу импульса в физике.Общая система уравнений в направлениях x и y всегда будет:

  1. масса * скорость (в х) = сумма массы * скорость всех объектов в х
  2. масса * скорость (в у) = сумма массы * скорость всех объектов в у

Вообще говоря, у вас всегда есть скорость мяча в х и у, все что вам нужно сделать, этоопределить массы как мяча, так и лопастей (я полагаю, это зависит от вас, но я предлагаю сделать их одинаковыми для простоты расчета).

С точки зрения определения угла, это очень просто, вы быпросто убедитесь, что отражение равно.Если мяч приближается к веслу (или стене) из-за падения на 60 градусов, то отскок также должен происходить при падении на 60 градусов.

0 голосов
/ 20 марта 2011

Откройте ваши учебники по Sin, Cos и Tan, так как вы используете bAngle.В частности, вы, вероятно, будете искать Sin для вертикального движения и Cos для горизонтального движения.В зависимости от того, где вы определили градус 0.

Кроме того, вы можете рассмотреть возможность кэширования горизонтальной и вертикальной скоростей, поскольку Sin и Cos стоят дорого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...