我在Cocos2d上做游戏。我有敌人射击,并有角色射击。我为敌人(和他们的子弹)创建了一个单独的图层,并为角色(及其子弹)创建了单独的图层。问题是,我不知道如何检测两层之间的碰撞。请注意,我在HelloWorldLayer中有场景,并且上述每个图层都是场景的子节点。任何帮助表示赞赏。谢谢!Cocos2d中的图层之间的碰撞检测?
回答
为什么不在子弹源的相反图层上创建子弹,即层A是角色和敌人子弹,层B是敌人和角色子弹?那么你的碰撞检测将在同一层。
查找到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调用就可以检测碰撞。 :)
您可以使用CGRectIntersectsRect检测碰撞的Cocos2D。
关于为敌人和子弹创建单独图层的想法可能会令人困惑。在这种情况下,你应该考虑去一层。你一定看过Ray Wenderlich的碰撞检测。如果没有看看Simple Cocos2d game。
如果您需要更多帮助,请告诉我。
我知道如何使用一层进行碰撞检测,但是如何使用多层进行碰撞检测? – ipodfreak0313 2011-05-21 04:08:16
没问题。如果你想为敌人和子弹以及玩家和子弹使用两个不同的图层,你应该首先创建一个数据类,在那里你可以创建存储你需要的坐标的应用变量。在第一层i。e播放器层只是在Data类变量中传递所需的坐标。如果你在敌人的子弹层中检测到碰撞,只需使用包含敌方子弹坐标的数据类变量。玩家的子弹和敌人层也是如此。 – Nitish 2011-05-21 13:23:05
只需看看[创建数据类](http://stackoverflow.com/questions/5798649/how-to-add-data-to-app-to-test-core-data-model/5800828#5800828) 。 – Nitish 2011-05-21 13:23:52
您需要添加以下行,如果你使用的花栗鼠
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. cocos2d中的碰撞检测
- 2. Cocos2D碰撞检测
- 3. 图像层和形状之间的碰撞检测
- 4. Box2d Cocos2d ContactListener检测碰撞
- 5. cocos2d像素碰撞检测
- 6. cocos2d sprite碰撞检测
- 7. 碰撞检测Objective-C(cocos2d)
- 8. Cocos2d/Box2d CCRibbon碰撞检测
- 9. Cocos2d游戏中的碰撞检测?
- 10. cocos2d:检测两个圆圈之间的碰撞
- 11. 矩形之间的碰撞检测libgdx
- 12. 检测透明UIImageviews之间的碰撞
- 13. 球之间的碰撞检测javascript
- 14. UIImageViews之间的碰撞检测
- 15. Cocos2d - 旋转Sprite的碰撞检测
- 16. 简单的碰撞检测在cocos2d box2d..nothing发生在碰撞
- 17. n体碰撞检测和成对碰撞检测之间的区别?
- 18. Pygame中的图像和物体之间的碰撞检测
- 19. 子视图中两个对象之间的碰撞检测
- 20. Java中两个图像之间的碰撞检测
- 21. cocos2d精灵碰撞检测包围盒
- 22. cocos2d旋转精灵碰撞检测
- 23. cocos2d中的视网膜显示地图碰撞检测iphone
- 24. 减少processing.js碰撞检测中对象之间的空间
- 25. 两幅图像之间的碰撞检测
- 26. 碰撞检测
- 27. java中的碰撞检测
- 28. Unity3D中的碰撞检测
- 29. Android中的碰撞检测
- 30. pygame中的碰撞检测
@highlycaffeniated这听起来棒极了!但问题是,我不知道如何将子项添加到不是Layer类的不同类的图层中。 – ipodfreak0313 2011-05-21 04:09:20