iPhone Pong Расширенный угол отклонения

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

Что я пытаюсь сделать, так это сделать так, чтобы, когда мяч ударяется о ракетку, он проверял, насколько далеко мяч находится от центра ракетки, и увеличивал угол отклонения, чем дальше мяч от центра ракетки. весло. (Например, в этом случае мяч будет отклонен назад на 90 градусов независимо от того, откуда он пришел, пока он попадает в центр ракетки)

Как я могу это сделать?

Любая помощь будет принята с благодарностью.

Спасибо.


person CherryBun    schedule 24.04.2010    source источник
comment
Уточнение точки координат... 90 градусов на что? ... входящий угол? ... веслом? ... нормаль весла? В физике, когда мы говорим об оптике и столкновениях, мы обычно имеем в виду угол по сравнению с нормалью. Однако такая система отсчета не имеет для меня смысла, учитывая то, что вы задали в вопросе.   -  person Sparky    schedule 24.04.2010
comment
90 градусов - это пример угла отклонения, когда мяч попадает точно в центр ракетки. Вот как я хотел, чтобы мяч вел себя; отклонить мяч после удара о ракетку под углом отклонения относительно центра ракетки. Если мяч коснется центра ракетки, он отклонится на 90 градусов, и чем дальше от центра ракетки, тем угол отклонения будет увеличиваться, скажем, я хочу, чтобы он отклонился на угол 45 градусов. если он касается левой стороны весла.   -  person CherryBun    schedule 24.04.2010


Ответы (1)


То, что вы нам дали, это ориентиры (центр и край). Что нам нужно, так это опорная линия, от которой мы будем измерять новый угол. Кроме того, то, что вы говорите, непоследовательно и, следовательно, не имеет смысла.

Я предполагаю, что то, что вы спрашиваете, - это способ расчета исходящего угла таким образом, чтобы он зависел только от того, где он ударился о весло. Если он попадет в центр весла, то, независимо от угла вхождения, он отскочит под углом 90 градусов к веслу. Если он ударится о край весла, то независимо от угла падения он отскочит под углом 45 градусов к веслу.

Если это так, то это следует сделать следующим образом (это не единственный способ).

Предположение: Форма весла — прямоугольник.

  • Пусть L — длина весла.
  • Пусть K — константа такая, что L / (2 * K) = 1 / sqrt(2).
  • Пусть D будет расстоянием от центра весла (может быть + или -).

тета = пи/2 - асин (Д/К);

Это должно дать вам угол относительно весла.

Надеюсь это поможет.

person Sparky    schedule 24.04.2010
comment
Да, я хочу установить его так, чтобы исходящий угол не зависел от входящего угла, но в соответствии с тем, где он приземляется на весло. Я знаю, что это не имеет никакого смысла с точки зрения физики, но я пытаюсь сделать это забавным. Спасибо за помощь, я думаю, это именно то, что мне нужно. - person CherryBun; 24.04.2010