Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 05.11.2012, 15:36   #1
Volcano
AnyKey`щик
 
Регистрация: 05.11.2012
Сообщений: 2
Написано одно полезное сообщение
Arcanoid

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

Нужен алгоритм аракноида в 2д, а именно угол на который нужно отправлять шар при столкновении.

У меня есть ветктор направления шарика, и есть обьект, стенка с которой он сталкивается.

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

Сначала я узнаю угол между обьектом и шаром при столкновенни при помощи функции ATan2.

Угол/столкновение есть, а как узнать на какой именно угол шар отправить дальше уже забыл. Спасибо.

Видел похожую тем в разделе блитц3д, но в максе таких команд нету, возможно и подход другой.
(Offline)
 
Ответить с цитированием
Старый 05.11.2012, 15:44   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Arcanoid

Тебе нужно найти перпендикуляр от плоскости от которой отражаешь вектор, и затем вычислить угол между перпендикуляром и вектором скорости шарика, и затем инвертировать его параллельно перпендикуляру.
Если у тебя плоскость в арканойде всегда горизонтальна, то просто отражай Y (инвертируй).
Если же не всегда горизонтальна, то как сказал выше.
Далее в арканойде обычно градус отскока зависит от места относительно середины платформы куда попадает шарик. Тут всё просто - чем левее попадает, тем левее наколнён перпендикуляр, и правее - наоборот.
Ты можешь даже обойтись без градусов, просто инвертируй Y и умножай на коэффициент левее / правее (0.5 - 1.0 - 1.5) - (левее, центр, правее) X вектора, таким образом будешь изменять вектор направления. Этот коэффициент должен быть плавным а не по условию.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Volcano (05.11.2012)
Старый 05.11.2012, 15:57   #3
Volcano
AnyKey`щик
 
Регистрация: 05.11.2012
Сообщений: 2
Написано одно полезное сообщение
Ответ: Arcanoid

Спасибо!

С падлом(платформа), примерно знаю как дела обстоят, но всеравно спасибо вам Мока!

Если подкажете еще как правильно инвертировать, буду благодарен еще больше еще немножко и начну бросать деньгами в монитор)

ап.
Думаю розберусь и сам, что же это я, сначала одну задачку списал, теперь уже и по вторую потянулся...спасибо влюбом случае.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (05.11.2012)
Старый 05.11.2012, 16:51   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Arcanoid

Любопытство - это отлично, только ещё нужно и самостоятельность - тогда будет много прогресса и роста в способностях и знаниях.
Ответы от других людей, дают знания, но не улучшают способностей. Знания без способностей - не применимы.

Если хочешь отразить вектор от горизонтальной плоскости, тогда просто Y = -Y;
Если Y был больше нуля, то он станет отрицательным, и наоборот - если Y меньше нуля, - на - будет +.
Для отражения от вертикальной плоскости - то же самое но для X.

Экспериментируй и протипируй (prototyping) - это отлично помогает как для тренировки кодинга, так и способностям реализовывать мысли и искать решения.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com