Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Прикосновение с объектами. (http://www.flasher.ru/forum/showthread.php?t=142410)

dkrstudio 20.07.2010 17:09

Прикосновение с объектами.
 
Логичный код
Код:

if (MyCar.hitTestObject(area_mc))
{
// Какой сюда код нужно прописать?
}

На сцене. есть символ. которым можно управлять - MyCar.
Также еcnm путь - траектория, по которому нужно переместить объект "MyCar", Остольное пространство - мовик или графика - area_mc, Какой код нужно прописать и что должно происходить на сцене когда MyCar соприкасается с area_mc? Перемешать на начальные координаты сразу нет. Как зделать от талкивание. и как это происходит с кодом в as3

Tr1te 20.07.2010 17:30

В момент столкновения приложить в противоположную сторону силу. Третий закон Ньютона.
Код за вас, тут врятли напишут.

dkrstudio 20.07.2010 17:38

а код та какой? я всего неделю пишу на 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/

Читайте название не требуется

Tr1te 21.07.2010 00:18

Цитата:

Сообщение от dkrstudio (Сообщение 923690)
а код та какой? Как писать этот закон.законы?

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

Может есть и другие способы.

expl 21.07.2010 00:29

Вообще там много подходов к физике, и применение 3-го закона ньютона - не самый удачный.
Лучше физический движок аля Box2d попробуйте заюзать
А что-то узнать по физике можно на http://gamedev.ru/

-De- 21.07.2010 00:39

Вот кстати http://animbook.mirmap.com/content/category/6/18/43/ было ж и про столкновения.
И мне что-то подсказывает, что Tr1te не сможет через 3-й з-н Ньютона рассчитать столкновение, все же скорость меняют, а не силу =)

Hidest 21.07.2010 01:54

Не хочу никого обидеть, но мне кажется, что у топикстартера опыта очень мало, иначе не возникло бы такого вопроса. Box2d дело хорошее, но сразу новичку его не освоить, но и советы про третий закон ньютона тут тоже не помогут. Совет один - читать побольше литературы про имитацию физики (и пока особо не важно, на каком языке реализация в ней предлагается).

dkrstudio 21.07.2010 03:22

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 минуты
Цитата:

Сообщение от -De- (Сообщение 923783)
Вот кстати http://animbook.mirmap.com/content/category/6/18/43/ было ж и про столкновения.
И мне что-то подсказывает, что Tr1te не сможет через 3-й з-н Ньютона рассчитать столкновение, все же скорость меняют, а не силу =)



Да, но как я написал ускорение на массу равно сила. Второй закон тогда получается а там уже и третий. Короч ТерМех, но я же нормальный человек и как у всех по ТерМеху у мну 3

ins_nsk 21.07.2010 10:03

рукарожа.жпг

http://www.emanueleferonato.com/2007...game-tutorial/

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

Tr1te 21.07.2010 12:52

Вложений: 4
O God. Ну вы слишком боитесь физики, а там нет ничего сложного. Я посмотрел пример который был по ссылке,
машинка там движется просто отвратительно. Если ты хочешь как там то можешь просто переписывать как там.
Если ты хочешь NFS, то придется немного по разбираться, но ты не бойся это не сложно.

Тут все просто третий закон ньютона. Описывается легко. Жаль сюда нельзя вставлять картинки, ну придеться
скачаивать. В картинке №1 (До столкновения), машина летит в стену. И у нее есть скорость которую ты
описываешь. Когда ты описываешь движение машины, ты расскладываешь скорость на вектора, по Х и по У.

Код AS3:

radian = (gradus * Math.PI)/180;
speedX=speed*Math.cos(radian);
speedY=speed*Math.sin(radian);

На картинке я сделал тоже самое.Ну а третий закон ньютон:
Сила действия равна по модулю и противоположна по направлению силе противодействия.
После столкновения (Картинка №2), твой вектор скорости по х будет направлен в противоположную сторону. Он
изменит направление. В коде тебе надо просто домножить на -1, это же не сложно. При всем при этом скорость
по У останеться неизменной, а для этого тебе надо в коде сделать... да ничего с ней не делать.
Но это если абсолютно упругий удар.
Если ты хочешь делать абсолютно НЕ упругий удар. Надо домножить! на коэффициент упрогости, в данном случае
0. И твоя машина просто остановиться по Х. НО по У она продолжит движение. и будет двигаться вдоль стенки.
В реальной жизне этих крайних случаев не бывает, коэф упругости находиться между ними, между 0 и 1.
Например если ты сделаешь коэф 0.5, то это значит что твой вектор по оси Х будет 50 процентов от своей
велечины, тоенсть в 2 раза меньше Картинка №3. ИЛи ты сделаешь коэф 0.2, и тогда длинна вектора будет 20
процентов от нормальной длинны. В этом случае машина отскочит от стены, но не сильно. НАдо просто
домножить на коэф, это тоже не сложно.

Но почему машина останавливается при соударении со стенкой? Изза того, что о стенку есть трение. НУ я
думаю что тут не сложно догадаться, что скорость по оси У, в твоем случае она звузит speedY, надо
уменьшить на силу трения, а сила трения это сила реакции опоры умноженная на коэф трения. Это значит чем
сильней твоя машина влетит в стену, тем больше трения будет, тем больше она затормозит об стену, что
абсолютно логично и без формул. В твоем случае можешь просто поступить так, у тебя есть скорость по оси Х,
можно считать ее реакцией опоры, и умножать на коэффициент. Это и будет твоя сила, (Коэф меньше единицы)
Это означает что у тебя есть speedY из которую надо уменьшить на силу трения. Если у тебя машина движеться
вперед, то скорость по У положительная, и надо вычитать силу трения, а если машина двигалась назад, и
ударилась об стену, то скорость машина отрицательная, и значит надо прибавлять силу трения. Короче
скорость надо всегда уменьшать. В случае движения машины вперед: speedY - WallFriction (Это трение о
стену.), а WallFriction=speedX*m, m - это твой коэф. сам подберешь. Но вообще для всех поверхностей он
гостированный, и можешь легко найти в нете.

Ребята из Electronic Arts пошли еще дальше. У них машина разворачивается при столкновении. Ну это
происходит из-за трения. ТОесть получается так, что Все эти силы скоростей действую из центра масс, Ну примерный центр машины/коробки и тд. а сила трения реакции опоры, они действуют в точке соприкосновения. И это означает что та точка машины которая соприкосается со стеной, тормозит, а импульс у машины остался, и скорость его тянет вперед, только уже в другом месте, в центре машины, что создает момент вращения вокруг точки соприкосновения. Ну и разворачивает машину. Картинка #4.

НУ это как бы все изложено упрощенно, и не рассматриваются более замороченные моменты. ТАк что думай, что ты хочешь получить от игры.


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.