Я делаю игру в Cocos2d. У меня есть враги, которые стреляют, и стрелять персонажа. Я создал отдельный слой для врагов (и их пуль) и отдельный слой для персонажа (и его пуль). Проблема в том, что я не знаю, как обнаружить столкновения между двумя слоями. Обратите внимание: у меня есть сцена в HelloWorldLayer, и каждый из вышеперечисленных слоев является дочерним элементом сцены. Любая помощь приветствуется. Благодаря!Обнаружение столкновений между слоями в Cocos2d?
ответ
Почему бы не создать пули на противоположном слое из источника пули, то есть слой А является символом и вражескими пулями, а слой В - врагом и символьными пулями? Тогда ваше обнаружение столкновения будет на одном уровне.
Посмотрите в CGRectIntersectsRect .... Я не сделал Cocos2D в течение длительного времени, но я помню, с помощью планировщика регулярно вызываем метод, который будет обнаруживать столкновения с использованием метода CGRectIntersectsRect
...
Я имел ограниченное количество спрайтов на экране и на каждом проходе метода обнаружения столкновений, я проверил бы, будет ли какой-либо из моих кадров спрайта справиться с рамами моего главного героя, используя CGRectIntersectsRect
.
Это, как я это сделал:
Шаг 1: Реализовать метод, который использует CGRectIntersectsRect, чтобы проверить, если спрайт кадры соприкасаются. Это может выглядеть примерно так:
- (BOOL)detectCollision
{
CGRect frame1 = someframe;
CGRect frame2 = anotherframe;
if(CGRectIntersectsRect(frame1, frame2))
return YES;
else
return NO;
}
Реализовать Scheduler вызывать ваш метод обнаружения столкновения каждую секунду с помощью:
[self schedule: @selector(detectCollision) interval:0.25];
Таким образом, в игре каждый метод collisionDetect называется вы можете обнаружить столкновения. :)
Вы можете обнаружить столкновения в Cocos2D использованием CGRectIntersectsRect.
Ваша идея создания отдельных слоев для врагов и пуль может оказаться запутанной. В этом случае вы должны рассмотреть возможность перехода на один уровень. Вы, должно быть, посмотрели на Ray Wenderlich обнаружения столкновения. Если вы не видите Simple Cocos2d game.
Если вам нужна дополнительная помощь, сообщите мне.
Я знаю, как сделать обнаружение столкновений с одним слоем, но как мне это сделать с несколькими? – ipodfreak0313
Нет проблем. Если вы хотите использовать два разных уровня для врага и пуль, а также игрока и его пулю, вы должны сначала создать класс данных, в котором вы можете создавать переменные приложения, которые хранят нужные вам координаты. В первом слое i.e слой игрока просто передаёт требуемые координаты в переменной класса Data. И если вы обнаруживаете столкновение в слое маркеров противника, просто используйте переменную класса данных, содержащую вражеские координаты пули. То же самое касается пулевых и вражеских слоев игрока. – Nitish
Просто взгляните на [Создание класса данных] (http://stackoverflow.com/questions/5798649/how-to-add-data-to-app-to-test-core-data-model/5800828#5800828) , – Nitish
Вам необходимо добавить следующие строки, если вы используете бурундук
shape->collision_type = kCollisionTypeParticle;
cpSpaceAddCollisionHandler(space_,
kCollisionTypeParticle,
kCollisionTypeParticle,
collisonDetect,
NULL,
NULL,
NULL,
self);
Здесь collisonDetect является методом, который мы должны зарегистрироваться как:
cpBool collisonDetect(cpArbiter *arb, struct cpSpace *space, void *data)
{
<YOUR CLASS> *layer = (<YOUR CLASS> *)data;
[layer collisonDetect:arb];
return cpTrue;
}
Теперь вот здесь вы будете обрабатывать остальную часть кода
-(void)collisonDetect:(cpArbiter*)arb
{
NSLog(@"COLLISION DETECTED");
}
- 1. Обнаружение столкновений между слоями
- 2. Обнаружение столкновений в Cocos2D
- 3. Обнаружение столкновений между слоями изображений и фигурами
- 4. Обнаружение столкновений в Cocos2D
- 5. Cocos2D - обнаружение столкновений getTileGIDAt
- 6. Обнаружение столкновений в игре Cocos2d?
- 7. Cocos2D - Общение между слоями
- 8. Обнаружение столкновений Objective-C (cocos2d)
- 9. Обнаружение столкновений в игре Cocos2d JS
- 10. Обнаружение столкновений между UIImageViews
- 11. Обнаружение столкновений между Divs
- 12. cocos2d: обнаружение столкновений не работает правильно
- 13. Cocos2d-x получение данных между слоями
- 14. Обнаружение столкновений между ускоряющимися сферами
- 15. Обнаружение столкновений между квадрациками OpenGL
- 16. Обнаружение столкновений между двумя прямоугольниками
- 17. Обнаружение столкновений 2D между прямоугольниками
- 18. Обнаружение столкновений между шарами javascript
- 19. обнаружение столкновения в cocos2d
- 20. Простое обнаружение столкновений в cocos2d box2d..Нечего происходит при столкновении
- 21. Проблемы со слоями в Cocos2d
- 22. Обнаружение столкновений в Andengine
- 23. Обнаружение столкновений между персонажами в Unity3D
- 24. Обнаружение столкновений между двумя BoundingBoxes в libgdx
- 25. Обнаружение столкновений между двумя прямоугольниками в java
- 26. Обнаружение столкновений между двумя объектами в подвале
- 27. Обнаружение столкновений между двумя PictureBox в WinForm
- 28. Pygame обнаружение столкновений между объектами в группе
- 29. Обнаружение столкновений между двумя квадратами в javascript
- 30. Обнаружение столкновений между двумя текстурами в XNA
@highlycaffeniated Это звучит великолепно! Но проблема в том, что я не знаю, как добавить ребенка к слою из другого класса, который не является классом Layer. – ipodfreak0313