2017-01-24 6 views
0

В настоящее время я работаю над прорывной игрой, и я застрял в математической проблеме. Вот сценарий.Базовые математические шкалы прорыва

Мяч имеет горизонтальную скорость, называемую bxspd. Мяч имеет координату X, названный bx. Мяч имеет максимальную скорость, названную bspd. Летучая мышь имеет координаты x, называемые px.

Когда мяч сталкивается с летучей мышью, он должен отскакивать в горизонтальном направлении относительно положения летучей мыши. Таким образом, другими словами:

// Событие столкновения bxspd = bx - px.

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

Проблема с этим - моя летучая мышь имеет ширину 50 с каждой стороны от центра. Как увеличить масштаб до максимальной скорости мяча? Таким образом, другими словами, если он попадает в крайний левый угол бита, bxspd становится -2 вместо -50?

С уважением, Claris

+0

При написании этого вопроса мне как-то удалось это выяснить. Происхождение px лежит слева от летучей мыши, поэтому я разработал следующую формулу: bdx = ((bx - (px + (pwidth/2)))/(pwidth/2)) * bspd; – NodziGames

+0

Вы можете добавить свой отзыв. – mplungjan

+0

Благодарим за предложение mplungjan. Я думаю, было бы выгоднее написать формулу в качестве ответа на вопрос, чтобы люди могли использовать ее в качестве справочного материала, если у них есть тот же вопрос. – NodziGames

ответ

0

После написания вопроса что-то как-то щелкнуло на месте, так что вот решение для тех, кто в нем нуждается.

bdx = ((bx - (px + (pwidth/2)))/(pwidth/2)) * bspd;

bdx - это xspeed шарика. bx - это положение мяча. px - это позиция битвы. pwidth - ширина летучей мыши. bspd - максимальная переменная скорости шара, поэтому bdx вычисляется относительно максимальной скорости шара (bspd).

Обратите внимание, что эта формула работает со смещением. Причина в том, что X игрока находится на самой левой стороне летучей мыши. Таким образом, чтобы найти центр, мы добавляем pwidth/2 в x игрока, чтобы найти центр.

+0

У вас есть независимые максимальные скорости для x и y? – fafl

+0

Надеюсь, я не буду неверно истолковывать ваш вопрос, но здесь. По умолчанию игра bspd равна 2, когда игра начинается. Это число ограничивает ваш мяч xspeed равным 2, а также yspeed до 2, а не их комбинированную скорость. Дайте мне знать, если я неправильно понял вопрос. – NodziGames

+0

Но тогда мяч, полет по диагонали, может летать со скоростью 2,82, разве это не странно? В моем понимании вы должны ограничивать абсолютную скорость, а не ось x и y независимо. – fafl

0

Скажем, если мяч попадает в наружный правый край летучей мыши, то он получает дополнительную скорость extrabatspeed, в центре он получает 0 и слева он получает -extrabatspeed. Летучая мышь имеет ширину batwidth, и она сталкивается с мячом в batcollisionx, со значением от 0 до batwidth. Я предполагаю, что ось х идет слева направо.

Тогда вы можете рассчитать изменение в ballspeedx как 2 * extrabatspeed * ballcollisionx/batwidth - extrabatspeed.

При столкновении ballspeedy становится отрицательным.

Закрытие шаровой скорости должно происходить после этого. Вычислите скорость как sqrt(x^2 + y^2) и исправьте оба x и y тем же коэффициентом.

+0

Благодарим вас за помощь. Мне удалось создать формулу после того, как я разместил вопрос. Ваша математика намного легче читать, поэтому я буду помнить об этом в следующий раз. – NodziGames

 Смежные вопросы

  • Нет связанных вопросов^_^