forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Отдача от взрыва (http://forum.boolean.name/showthread.php?t=17374)

DarkMedveD 13.10.2012 22:34

Отдача от взрыва
 
Как реализовать такую штуку - рядом взрывается объект, и от него идет взрывная волна, отталкивающая все объекты рядом..?

Я так понял это импульс, но как его посчитать?..

HolyDel 13.10.2012 22:52

Ответ: Отдача от взрыва
 
взрывная_волна_радиус += скорость_взрыва * делта_времени_кадра
для каждого объекта
если расстояние от центра взрыва меньше чем радиус взрыва то задать импульс объекту направленный от центра взрыва к центру объекта
если взрывная_волна_радиус больше взрывная_волна_максимум_радиус то уничтожить взрывную волну

DarkMedveD 13.10.2012 22:54

Ответ: Отдача от взрыва
 
Весь день меня выручаешь, спасибо огромное.

А как задать импульс направленный от центра одного объекта к центру другого?..

Mr_F_ 13.10.2012 22:56

Ответ: Отдача от взрыва
 
Цитата:

А как задать импульс направленный от центра одного объекта к центру другого?..
вычти из центра ударенного объекта центр взрыва, нормализуй, получишь вектор пинка

DarkMedveD 13.10.2012 22:58

Ответ: Отдача от взрыва
 
Вычитать из центра - координаты? Как это делается, идиотом же себя чувствую..)

HolyDel 13.10.2012 23:01

Ответ: Отдача от взрыва
 
Код:

float dx = EntityX(explosion) - EntityX(body)
float dy = EntityY(explosion) - EntityY(body)
float dz = EntityZ(explosion) - EntityZ(body)

float alen = power_of_explosion / sqrt(dx*dx + dy*dy +dz*dz)

dx = dx * alen
dy = dy * alen
dz = dz * alen

Каждый кадр двигаешь body на эти смещения. постепенно гася смещения как то так
dx = dx * 0.99

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

DarkMedveD 13.10.2012 23:05

Ответ: Отдача от взрыва
 
А почему бы не:

Код:

float alen = power_of_explosion / xEntityDistance(BodyBully,BodyDupe);

dx = dx * alen
dy = dy * alen
dz = dz * alen


DarkMedveD 13.10.2012 23:08

Ответ: Отдача от взрыва
 
Это все круто, конечно, но мне бы именно пинка дать, импульс.
Я ж на физике все это пытаюсь сделать.

Dzirt 13.10.2012 23:15

Ответ: Отдача от взрыва
 
Даёшь пинок обьекту в направлении вектора между источником и целью...сила пинка зависит от дистанции...то есть чем дальше обьект, тем слабее пинок(сила толчка=сила взрыва*дистанцию(обьект,цель)).

DarkMedveD 14.10.2012 00:21

Ответ: Отдача от взрыва
 
Спасибо, мужики.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot