Показать сообщение отдельно
Старый 19.11.2013, 00:27
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 19  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
много математики http://ru.wikipedia.org/wiki/Задача_трёх_тел
Да ну нет, тут физикой, хоть как-то относящейся к закону тяготения Ньютона и не пахнет:
Цитата:
Пока идея такая: При определённом расстояние объект как бы присоединяется к космическому кораблю, но если у космического корабля скорость станет определённой, то объект, как бы будет отсоединятся. Так же можно сделать касание объектов друг друга, чтобы избежать возможности - несколько объектов выставились в ряд не по периметру, а в одном месте.
Тут при расстоянии меньше R надо логически присваивать объекту аттрактор, представляющий собой круг, жёстко привязыанный к центру корабля, а при скорости корабля больше V удалять у всех объектов, зарегеных на атракторе этот аттрактор и ангегить их с него.

Аттрактор "круг" делается достаточно просто, суть такая:
- в каждом кадре смотрим положение объекта относительно этого круга
- если объект за кругом, то направляем скорость внутрь
- если объект внутри круга - наружу
(составляющая, направленная к центру и от цетра тем меньше, чем меньше разница между реальным положением и "орбитой", т.е. Rreal - R)
- тангенциальную составляющую берем по часовой стрелке (к примеру) и делаем тем больше, чем меньше разница Math.abs(Rreal - R)
- массу, ускорение - даже не рассматриваем - это чисто кинематическая задача.

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

Т.е. в объекте на enterFrame вызываем getV() у текущего назначенного атрактора, и прибавляем ее к нашим координатам - всё!