Показать сообщение отдельно
Старый 01.02.2013, 16:58   #11
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Имитация веревки

вобщем метод такой: берутся две точки которые имеют силу тяжести и инерцию(я например брал готовый двиг физикс т.к. писать самому коллизии лень). затем узнаем расстояние и градус

sx#=x1-x2
sy#=y1-y2
dist#=Sqr(sx^2+sy^2)
rad#=ATan2(sy,sx)


затем прикладываем импульс(не силу а ипульс- импульс, имеет единицу измерения масса*дистанция/время)
к обоим телам , берется некое расстояние(set_dist) которое изначально указываешь, к которому должны стремится точки





force_x1#=Cos(rad)*(set_dist-dist)
force_y1#=Sin(rad)*(set_dist-dist)

получаем импульс отталкивания и притягивания для обоих точек

затем применяем импульс для обоих тел с разным знаком

pxBodyAddForce body1,force_x1,force_y1,0,1
pxBodyAddForce body2,-force_x1,-force_y1,0,1

обычно тела по сумасшедшему себя ведут и приходится применять дампинг pxBodySetLinearDamping

прикрепил ехе-шник с исходником как это будет выглядеть
(мышкой можно тянуть веревку, колесиком мыши увеличивать\уменьшать set_dist)
Вложения
Тип файла: rar elastic.rar (1.91 Мб, 1502 просмотров)
(Offline)
 
Ответить с цитированием