Обнаружение столкновения с частицами в Cocos2d - PullRequest
2 голосов
/ 30 июня 2011

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

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

-(tCCParticle*)getQuadParticle:(int)quadIndex
{
    return &particles[quadIndex];
}

Затем в моей сцене Cocos2d я могу получить частицу и позицию:

tCCParticle *particle = [emitter getQuadParticle:i];
CGPoint pos = particle->pos;

Это работает, нопредупреждает, что CCParticleSystemQuad может не отвечать на getQuadParticle.Это вызывает беспокойство, но то, что я хотел бы сделать сейчас, это установить позицию на сцене аналогичным образом, например:

[emitter setParticlePos:i newPosition:newPos];

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

Я начал другую тему аналогичного характера, которая называлась «Как получить положение частицы в Cocos2d (iphone)», и мне сказали переопределить метод «update» или метод «updateQuadWithParticle», но я не уверен, как это сделать.точно об этом.

Если бы кто-то мог показать мне пример того, как это сделать, я был бы очень признателен.

1 Ответ

0 голосов
/ 22 августа 2011

Это работает, но предупреждает, что CCParticleSystemQuad может не отвечать на getQuadParticle.

Для предупреждения убедитесь, что ваш эмиттер сделан из вашего подкласса (а не обычного CCParticleSystemQuad), и что ваш метод getter объявлен в интерфейсе (файл .h) и определен в реализации (файл .m).

Глядя на API , я не вижу метода для setParticlePos:newPosition:, но есть нечто, похожее на: -(void) updateQuadWithParticle:(tCCParticle*)particle newPosition:(CGPoint)pos;

Я не использовал его, но взгляд на источник показывает, что он делает то, что вам нужно.

Так что, возможно, попробуйте [emitter updateQuadWithParticle:particle newPosition:newPos];

Надеюсь, это полезно.

...