Arcanoid
Привет форумчане, забыл уже школьный курс геометрии, подкажите что я делаю не так.
Нужен алгоритм аракноида в 2д, а именно угол на который нужно отправлять шар при столкновении. У меня есть ветктор направления шарика, и есть обьект, стенка с которой он сталкивается. Мне нужно в последствии его отразить в нужном направлении, как в обычных арканоидах. Сначала я узнаю угол между обьектом и шаром при столкновенни при помощи функции ATan2. Угол/столкновение есть, а как узнать на какой именно угол шар отправить дальше уже забыл. Спасибо. Видел похожую тем в разделе блитц3д, но в максе таких команд нету, возможно и подход другой. |
Ответ: Arcanoid
Тебе нужно найти перпендикуляр от плоскости от которой отражаешь вектор, и затем вычислить угол между перпендикуляром и вектором скорости шарика, и затем инвертировать его параллельно перпендикуляру.
Если у тебя плоскость в арканойде всегда горизонтальна, то просто отражай Y (инвертируй). Если же не всегда горизонтальна, то как сказал выше. Далее в арканойде обычно градус отскока зависит от места относительно середины платформы куда попадает шарик. Тут всё просто - чем левее попадает, тем левее наколнён перпендикуляр, и правее - наоборот. Ты можешь даже обойтись без градусов, просто инвертируй Y и умножай на коэффициент левее / правее (0.5 - 1.0 - 1.5) - (левее, центр, правее) X вектора, таким образом будешь изменять вектор направления. Этот коэффициент должен быть плавным а не по условию. |
Ответ: Arcanoid
Спасибо!
С падлом(платформа), примерно знаю как дела обстоят, но всеравно спасибо вам Мока! Если подкажете еще как правильно инвертировать, буду благодарен еще больше еще немножко и начну бросать деньгами в монитор) ап. Думаю розберусь и сам, что же это я, сначала одну задачку списал, теперь уже и по вторую потянулся...спасибо влюбом случае. |
Ответ: Arcanoid
Любопытство - это отлично, только ещё нужно и самостоятельность - тогда будет много прогресса и роста в способностях и знаниях.
Ответы от других людей, дают знания, но не улучшают способностей. Знания без способностей - не применимы. Если хочешь отразить вектор от горизонтальной плоскости, тогда просто Y = -Y; Если Y был больше нуля, то он станет отрицательным, и наоборот - если Y меньше нуля, - на - будет +. Для отражения от вертикальной плоскости - то же самое но для X. Экспериментируй и протипируй (prototyping) - это отлично помогает как для тренировки кодинга, так и способностям реализовывать мысли и искать решения. |
Часовой пояс GMT +4, время: 09:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot