cocos2d / box2d iPhone - Случайные круговые пути - PullRequest
1 голос
/ 27 апреля 2011

Я экспериментирую с некоторыми новыми идеями в Cocos2D / Box2D на iPhone.

Я хочу анимировать небольшой рой светлячков, движущихся по круговым (случайным?) Путям ... идея заключается в том, что пользователь может поймать светлячка с сеткой ..

Я подумал об использовании гравитационного моделирования для этого, но я считаю, что это слишком усложняет ситуацию ... Мой предыдущий опыт использования кривых Безье говорит мне, что это тоже не решение ..

У кого-нибудь есть яркие идеи для меня?

Большое спасибо.

Ответы [ 2 ]

6 голосов
/ 27 апреля 2011

Вам нужны светлячки, чтобы столкнуться друг с другом?

Я спрашиваю, как будто это не является обязательным требованием, Box2D, вероятно, излишним для ваших нужд. Cocos2d - отличный выбор для этого, по звукам, но я думаю, что вам было бы лучше, если бы вы смотрели алгоритмы флокирования, такие как boids

Даже это может быть слишком сложно. Вероятно, будет достаточно смешать несколько терминов греха и косинуса с некоторыми случайными коэффициентами масштабирования.

У вас может быть одна комбинация синус / косинус, образующая эллипс размером почти с экран:

x = halfScreenWidth + cos (t) * halfScreenWidth * randomFactor;
y = halfScreenHeight + sin (t) * halfScreenHeight * randomFactor;

где randomFactor будет чем-то в области от 0,6 до 0,9

Это даст вам широкое эллиптическое движение по экрану, затем вы можете добавить меньший фактор sin / cos, чтобы они вращались вокруг точки на этом эллипсе.

Путем умножения вашей дельты времени (t) на разные значения (отрицательные и положительные) путь кривой будет двигаться менее геометрическим образом. Например, если вы используете

x = halfScreenWidth + cos (2*t) * halfScreenWidth * randomFactor;

эллипс превратится в цифру 8. (я думаю!)

Надеюсь, это поможет вам начать. Удачи.

1 голос
/ 27 апреля 2011

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

http://www.aridolan.com/ofiles/Download.aspx

...