![]() |
Пртитягивающиеся и отталкивающиеся магнитики
Вложений: 1
:confused: Помогите пожалуйста сделать притягивающиеся и отталкивающиеся магнитики. Т.е. чтобы разноимёнными полюсами они притягивались, а одноимёнными - отталкивались. Прилогается исходник. Подправте что надо и вышлите мне на мыло. Очень прошу. Зарание споооосибо. :D
|
ну делаешь точку, делаешь обьект, вычисляешь дистанцию (длинну вектора)б чем короче дистанция, тем выше притяжение, незнаю точной формулы, но можно использовать что-то вроде:
max_speed=5; speed=max_speed/distance; ну и сделать радиус действия поля притяжения: max_speed=5; if(distance<100){ speed=max_speed/distance; } else{ speed=0; } дистанция расчитывается по формуле: distance=Math.sqr(Math.pow((Math.abs(x1)-Math.abs(x2)),2)+Math.pow((Math.abs(y1)-Math.abs(y2)),2)); где координаты точки притяжения: x1,y1 и координаты центра обьекта: x2,y2 сокращение дистанции производится по следующей вормуле: angle=Math.asin((Math.abs(y1)-Math.abs(y2)); xspeed=Math.cos(angle)*speed yspeed=Math.sin(angle)*speed if(x1<x2){xspeed=-xspeed} if(y1<y2){yspeed=-yspeed} x2+=xspeed; y2+=yspeed; в итоге получаем: max_speed=5; distance=Math.sqr(Math.pow((Math.abs(x1)-Math.abs(x2)),2)+Math.pow((Math.abs(y1)-Math.abs(y2)),2)); if(distance<100){ speed=max_speed/distance; } else{ speed=0; } angle=Math.asin((Math.abs(y1)-Math.abs(y2)); xspeed=Math.cos(angle)*speed yspeed=Math.sin(angle)*speed if(x1<x2){xspeed=-xspeed} if(y1<y2){yspeed=-yspeed} x2+=xspeed; y2+=yspeed; |
| Часовой пояс GMT +4, время: 19:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.