![]() |
Прикосновение с объектами.
Логичный код
Код:
if (MyCar.hitTestObject(area_mc))Также еcnm путь - траектория, по которому нужно переместить объект "MyCar", Остольное пространство - мовик или графика - area_mc, Какой код нужно прописать и что должно происходить на сцене когда MyCar соприкасается с area_mc? Перемешать на начальные координаты сразу нет. Как зделать от талкивание. и как это происходит с кодом в as3 |
В момент столкновения приложить в противоположную сторону силу. Третий закон Ньютона.
Код за вас, тут врятли напишут. |
а код та какой? я всего неделю пишу на flash. Как писать этот закон.законы? Первый закон
"Тело находится в сосоянии покоя пока на него не действуют другие тела или Силы действуюши на тело равны по модулю" Второй "Произведение ускорения и массы пропорционально равно силе трения плюс произведение массы и g=9.8 "как то так"" Третий закон Ньютона: две любые материальные точки взаимодействуют друг с другом с силами, направленными по прямой, соединяющей эти точки, равными по величине и противоположно направленными http://www.toehelp.ru/theory/ter_meh/image032-8.gif Добавлено через 23 минуты Для тех у кого такой же будет вопрос, скидывайте сюда ссылки на описание любой физики в гоночных играх http://siliren.ru/content/view/55/5/ Добавлено через 2 часа 28 минут http://black-zorro.com/mediawiki/FOA...ipt_3._Часть_1 http://animbook.mirmap.com/content/view/31/43/ Читайте название не требуется |
Цитата:
Может есть и другие способы. |
Вообще там много подходов к физике, и применение 3-го закона ньютона - не самый удачный.
Лучше физический движок аля Box2d попробуйте заюзать А что-то узнать по физике можно на http://gamedev.ru/ |
Вот кстати http://animbook.mirmap.com/content/category/6/18/43/ было ж и про столкновения.
И мне что-то подсказывает, что Tr1te не сможет через 3-й з-н Ньютона рассчитать столкновение, все же скорость меняют, а не силу =) |
Не хочу никого обидеть, но мне кажется, что у топикстартера опыта очень мало, иначе не возникло бы такого вопроса. Box2d дело хорошее, но сразу новичку его не освоить, но и советы про третий закон ньютона тут тоже не помогут. Совет один - читать побольше литературы про имитацию физики (и пока особо не важно, на каком языке реализация в ней предлагается).
|
Hidest +
На самом деле Лето. не очень то хочется в жару дома сидеть и юзать инет. Но меня реально заинтересовал Action Script 3.0 Я и раньше Часто посматривал сюда, но все обходился Хорошей графикой, HTML, CSS, Jquery. Да материала в инете мало было по AS3. Но тут зацепила идея, что поделать. На http://animbook.mirmap.com есть статья. Все на Action Scruipt 2.0 Год назад у меня был PDF файл с этой книгой, может если поискать на дисках то и щас найду. Статья старая но все же это именно то что надо. описывает все то что хотелось бы спросить. http://rutracker.org/forum/viewtopic.php?t=1874555 Образ к книге. Но вот в чем проблема. Я не настолько нуб чтобы думать что если я зделаю ту игру которую выбрал своей первой): то она будет такая как я хочу. я прекрасно понимаю что flash грузится очень просто. и даже сейчас fla файл весит 34 кило байта. но учитывая что каждый update кадров передается значение скорость (очень малая) плюч к этому добавить классы с физикой. Игра будет виснуть. Второе то что я не хотел бы чтобы. ролик не был похож на типичный проект. где смена карты происходит из за условия достигнет обьект края и выезжает с противоположного (надеюсь понятно описал). Я бы хотел чтобы положение машыины всегда остовалось 90 градусов а вот поворот сцены менять но тут проблема с картой. Добавлено через 2 минуты Цитата:
Да, но как я написал ускорение на массу равно сила. Второй закон тогда получается а там уже и третий. Короч ТерМех, но я же нормальный человек и как у всех по ТерМеху у мну 3 |
рукарожа.жпг
http://www.emanueleferonato.com/2007...game-tutorial/ на as3 перевести не так сложно. тем более если заглянуть в более поздние туториалы, там есть частичный перевод. |
Вложений: 4
O God. Ну вы слишком боитесь физики, а там нет ничего сложного. Я посмотрел пример который был по ссылке,
машинка там движется просто отвратительно. Если ты хочешь как там то можешь просто переписывать как там. Если ты хочешь NFS, то придется немного по разбираться, но ты не бойся это не сложно. Тут все просто третий закон ньютона. Описывается легко. Жаль сюда нельзя вставлять картинки, ну придеться скачаивать. В картинке №1 (До столкновения), машина летит в стену. И у нее есть скорость которую ты описываешь. Когда ты описываешь движение машины, ты расскладываешь скорость на вектора, по Х и по У. Код AS3:
Сила действия равна по модулю и противоположна по направлению силе противодействия. После столкновения (Картинка №2), твой вектор скорости по х будет направлен в противоположную сторону. Он изменит направление. В коде тебе надо просто домножить на -1, это же не сложно. При всем при этом скорость по У останеться неизменной, а для этого тебе надо в коде сделать... да ничего с ней не делать. Но это если абсолютно упругий удар. Если ты хочешь делать абсолютно НЕ упругий удар. Надо домножить! на коэффициент упрогости, в данном случае 0. И твоя машина просто остановиться по Х. НО по У она продолжит движение. и будет двигаться вдоль стенки. В реальной жизне этих крайних случаев не бывает, коэф упругости находиться между ними, между 0 и 1. Например если ты сделаешь коэф 0.5, то это значит что твой вектор по оси Х будет 50 процентов от своей велечины, тоенсть в 2 раза меньше Картинка №3. ИЛи ты сделаешь коэф 0.2, и тогда длинна вектора будет 20 процентов от нормальной длинны. В этом случае машина отскочит от стены, но не сильно. НАдо просто домножить на коэф, это тоже не сложно. Но почему машина останавливается при соударении со стенкой? Изза того, что о стенку есть трение. НУ я думаю что тут не сложно догадаться, что скорость по оси У, в твоем случае она звузит speedY, надо уменьшить на силу трения, а сила трения это сила реакции опоры умноженная на коэф трения. Это значит чем сильней твоя машина влетит в стену, тем больше трения будет, тем больше она затормозит об стену, что абсолютно логично и без формул. В твоем случае можешь просто поступить так, у тебя есть скорость по оси Х, можно считать ее реакцией опоры, и умножать на коэффициент. Это и будет твоя сила, (Коэф меньше единицы) Это означает что у тебя есть speedY из которую надо уменьшить на силу трения. Если у тебя машина движеться вперед, то скорость по У положительная, и надо вычитать силу трения, а если машина двигалась назад, и ударилась об стену, то скорость машина отрицательная, и значит надо прибавлять силу трения. Короче скорость надо всегда уменьшать. В случае движения машины вперед: speedY - WallFriction (Это трение о стену.), а WallFriction=speedX*m, m - это твой коэф. сам подберешь. Но вообще для всех поверхностей он гостированный, и можешь легко найти в нете. Ребята из Electronic Arts пошли еще дальше. У них машина разворачивается при столкновении. Ну это происходит из-за трения. ТОесть получается так, что Все эти силы скоростей действую из центра масс, Ну примерный центр машины/коробки и тд. а сила трения реакции опоры, они действуют в точке соприкосновения. И это означает что та точка машины которая соприкосается со стеной, тормозит, а импульс у машины остался, и скорость его тянет вперед, только уже в другом месте, в центре машины, что создает момент вращения вокруг точки соприкосновения. Ну и разворачивает машину. Картинка #4. НУ это как бы все изложено упрощенно, и не рассматриваются более замороченные моменты. ТАк что думай, что ты хочешь получить от игры. |
Вот она беда россии. мы часто смотрим на запад. Терпеть не могу переведенные уроки. и туториалы:confused:
Все таки я надеялся что Adobe будет учить русский и это свершилось. хотя у нас таких программ не было и небудет. именно из за тутореалов. (гадость) Пока что я понял что в as3 рулит addEventListener (который слушает события и затем идет функция) затем идет физика. и вроде все понятно. Второй день юзаю 1-6 главы Книги где игры пишут на as2 там совершенно другой подход. конвертер выдает не понятный класс, так что это бессмысленно. но сохраняется тоже после наступления действия чтото происходит. Добавлено через 23 минуты я не боюсь разбиратся. я же сказал что разбил процес на части. Теперь та чась котороя определяет Обнаружение столкновения для сложных фигур в as3 (узнал что это математика, тригонометрия. в идеале) для начало нужно было просто задать скорость вперед назад и зделать чтобы обьект поворачивал при нажатии в лево и вправо. потом определять столкновнеия. Как я убедился Код AS1/AS2:
вот как определить количество столкновений с 4 линиями обьекта машины. (Да и сама эта идея выглядет не реалестично, а проверять на столкновения со всеми гранями обьекта. муторно) да и потом? Проверять весь путь который пройдет машина (трассу?) а кривые? находить все уравнения? может есть другой вариант? Добавлено через 24 минуты Вот это уже AS3/ но тоже разработка запада |
Напишите конкретно что надо сделать, без лирических отступлений о том как все сложно. Что уже есть, что не получается? По моим догадкам вы хотите смоделировать двумерное движение + столкновения.
hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean может проверять пересечение объекта с точкой. То что вы называете невидимый прямоугольник это габаритный контейнер объекта, можно проверять пересечение не с ним, а с сами объектом, для этого shapeFlag задаем равным true. Потом рисуете, например, ограждение трассы сложной формы, а на машине устанавливаете несколько точек для проверки пересечения hitTestPoint. вот тут так сделано, только это AS2 (метод hitTest()): http://tester.kiti-art.ru/flash/fish5.html |
Цитата:
Цитата:
|
Цитата:
|
Вложений: 1
Мда. хреновый из меня физик и програмист. буду юзать с самого начала физику.
|
C самого начала
Извените за лирику. но мне перегрели мозг. спасибо трайтону и всем кто помог советом сделать наподобие макета неделю назад. сейчас же я вообще ни чего не могу понять. не говоря о столкновениях.
Код:
var s:Number = 10;//Максимальная скоростьЦитата:
Угол поворота понятно как задавать. но я теперь не могу разобратся как сохранять поворот при движении. После свойства rotation Код:
hero.x += sX;в условии Up и Down Увеличивать на a // Ускорение и до условий умножать на f//Трение ни чего на тесте флешки не выводится (тобись нет ничего). Правда надоела мне игра. но я не здамся. даже учебник алгебры нашел за 7 класс и кроме как того что ускорять нужно правдоподобное ускорение машины с ступенчатой передачей. соответсвенно клавиши 1. 2. 3. 4. 5. и задняя скорость. Но правда не понимаю. аномальная жара плавит мозг подскажите ПЛЗ |
Я тут както вопроса не увидел. И поясни, пожалуйста, что ты имеешь ввиду под: "но я теперь не могу разобратся как сохранять поворот при движении."
Что ты под этим подразумеваешь. |
dkrstudio, этот код и не должен ничего выводить, там просто меняются переменные.
Поворот машины штука относительно сложная по сравнению с учебником алгебры за 7 класс. Вам нужна "механика", раздел называется "динамика". Там показывается, что любое движение тела можно разложить на поступательное движение центра масс и вращение вкруг оси, проходящей через центр масс... |
Вот код который я писал в начале. все вроде работает. кроме кучи багов. хоть щас на сцену
Код:
// Типа booleanПравда не могу понять. При нажатии лево/право я увеличиваю gradus obj поворачивается на него. Скорость разложена на Код:
speedX=speed*Math.cos(radian);И второй вопрос. не мучайте меня подскажите. может сразу в классы пакеты или как там (я еще не разобрался в них) ведь создаю игру и в ней будут машины. хотя бы те которыми будет управлять один игрок. так как это все дело запихнуть в классы и загружать на сцену в определенные координаты? |
Со второго вопроса нужно было начинать. Почитать документацию и сделать хоть пару примеров, там все вполне доступно и есть исходники.
А по поводу первого, вы понимаете что происходит в этой строке: speed+=power&&speed<maxSpeed;? Тут наверное нужен условный оператор. |
Код AS3:
Код AS3:
|
dkrstudio, оформите код тегами [code][/code]. Или просто уберите лишнее, непонятно ничего.
|
Может поможет в освоении такая информация. Есть неплохой блог http://xitri.com/. Там есть множество примеров эффектов анимации и использование в анимации actionscript. Там же пример игры-парковки с исходниками и с описанием формул расчета, правда на as2. Думаю поможет в освоении игровой физики
|
dkrstudio, на сколько мне видится, у тебя две проблемы. Это то что ты не знаешь что надо писать, и не знаешь как надо писать.
Давай по порядку. Если пишешь программу то тебе надо в голове понимать ее алгоритм, если ты этого не понимаешь то очень сложно помоч, по этому сначала надо разобраться. Понимаешь ли ты как должна рассчитываться физика? (По каким законом машина движеться) Поступал ли ты в тех ВУЗ? Просто при поступлении в тех ВУЗ, половина задач именно на динамику. Еще вопрос, сам ли ты писал тот код который ты сюда вставляешь? Понимаешь ли ты этот код? |
Да вопрос понять невозможно. Соответственно и ответить. Ну а если на человеческом проблемы с языком (ладно там грамматика, хотя я бы стрелял), то что говорить о as3?
|
Цитата:
Если вы не понимаете что написано у вас в коде, ничего не будет ездить как надо, разве что случайно) Что по вашему значит "разложить скорость", проекция вектора на направление? x = v*cos(a), y = v*sin(a), где v - скорость, a - ее угол с осью х. |
Почему не видно мой аватар. *ну что тут я могу поделать*.
Вобщем код который изначально не мой. я его просто сразу разобрал и быстро понял почему так. потом пошло поехало. Теперь я снова в нем разобрался. Спасибо всем. и не пугайте так новичков. тема движения и физики весьма сложная. Думаю пора хаканчивать этот топик. тему форума. Если кто в дальнейшем будет читать этот топик или как правильно я не знаю. Смортите на синтаксис и на названия переменных. и не пугайтесь! если в продолжение По названию темы будет вопрос про соприкосновения с другими обьетками на сцене то в as3 есть пару методов все на условиях if else. вобщем это основы. Учитесь создовать классы но прежде тестируйте все функции *если можно отнести движение к ним* отдельно и соединяйте готовые СВОИ сто раз разобранные и понятные коды Всем спасибо. |
| Часовой пояс GMT +4, время: 11:25. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.