PDA

Просмотр полной версии : Отталкивание от окружности


PeTa4eK
15.12.2007, 05:10
Вобщем вот вопрос:

Есть мув h, его окружает окружность(мув) его имя s, как при набегании мува h на мув s отталкивать его?(чтобы мув h не выбежал за пределы шарика.
Может кажется что все просто но ето не так.
Я пытался длеать зависимость от угла поворота, тоесть если повернут вверх идет вниз, но нечего хорошего из етого не вышло! ВОбщем надеюсь на вашу помощь.

aQuestion
15.12.2007, 12:55
попробуйте так:
1 нормаль к окружности (нх, ну) = (х/радиус, у/радиус)
2 касательная - нормаль под 90° - (-ну, нх)
3 проэкция скорости на касательную - (скорость скалярно на касательную) * (-ну, нх)
4 новая скорость = старая скорость - 2 * (старая скорость - проекция из 3)

udaaff
15.12.2007, 14:06
Считайте расстояние от мувика до центра окружности, если оно больше радиуса, то -- стоп, если меньше, то перемещаем в следующую позицию. Как отталкивать сами додумайте =)

aQuestion
15.12.2007, 15:55
дословно по моему посту выше:

PeTa4eK
16.12.2007, 04:59
Фух спасибо :) но суть вопроса была не в этом, я к примеру привел окр.! мне нужно найти столкновения с неправильной формой(я забыл это написать в вопросе)
Теперь приведу более подробный пример. Допустим есть опять круг, его окружает скала(понятно что неправильной формы) как найти столкновения между ними?(допустим можно воспользоваться hitTest) ну допустим я нашел точку пересечения. Как мне теперь сделать отталкивание круга от нее.Как узнать сверху или снизу мув соединился и тд.
Но всеравно спасибо :) приму к сведению может когда понадобится соединить с окр.

udaaff
16.12.2007, 12:52
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001958.html

an_games
16.12.2007, 16:34
есть несложный код столкновения со сложной поверхностью, который редко используют по чему-то(и, вообще, в нете гораздо больше дурацких примеров столкновения, которые только с толку сбивают).

там, правда нужно посидеть и понять суть, чтоб подстроить под ситуацию,но это мелочи.

Скажите куда кинуть исходник и, вообще, куда здесь кидать файл, если кто-то попросил или я хочу показать его другим?

udaaff
16.12.2007, 16:42
Жмите на кнопку "Расширенный режим".

†‡Paladin‡†
16.12.2007, 16:50
дословно по моему посту выше:
Кривой код. Почему шарик вылетает из окружности при столкновении?

an_games
16.12.2007, 18:02
ок. позже скину исходник,
но могу сказать, что столкновение там построено на следующем.может это то, что надо.

if (стена.hitTest(герой._x, герой._y, true)){движение героя меняется на противоположное}

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

aQuestion
16.12.2007, 18:11
Кривой код. Почему шарик вылетает из окружности при столкновении?а я думал, столько сидеть и пялиться никто не будет ) ну, ошибки накапливаются. добавьте пункт 5 - нормализовать вектор скорости, к исходной длине.

PeTa4eK
17.12.2007, 05:21
У меня герой двигается в определенную точку. Я знаю про этот кодик, но мне он не оч помогает, т.к при столкновении со стенной он останавливается , а мне надо например если стена справа и точка куда бежать ниже его то он кабы проскальзывает вниз но не заходит на скалу... я так уже сделал с помощью _rotation(узнавал куда повернут) но если стена с низу и справа? как быть? есть ли более рациональный вариант чем _rotation?

aQuestion
17.12.2007, 11:05
если _rotation не работает, попробуйте переустановить флеш.

PeTa4eK
18.12.2007, 04:27
Да нет дело не в том что он у меня не работает, он работает просто так не оч удобно.. есть-ли более рациональный подход?

an_games
20.12.2007, 00:25
хе-хе, сейчас занимаюсь тем-же(если правильно понял). и пока ничего умнее не придумал. у меня по бокам героя две точки и касаясь одной из них припятствия он поворачивает в сторону и следует вдоль препятствия, но код ужасно сырой и глючный.
тут нужен алгоритм поиска пути в непрерывном пространстве- векторная алгебра и все такое.

PeTa4eK
20.12.2007, 07:20
Хех как жаль что я еще в 7 классе :)

an_games
20.12.2007, 21:36
зато у тебя есть все шансы исправить ошибку поколений-если бы я знал, что алгебра мне пригодиться я, может, и не стал бы пить пиво вместо уроков матиматики.
я так понимаю, ты решил заделать стратегию или рпг-ху, если так, то без векторки к сожалению никуда. я сейчас пытаюсь выдумать алгоритм ПП для квестов типа "Петьки", а потом скину на растерзание на форум.

к стати- сюда зайди http://www.flasher.ru/forum/showthread.php?t=105633