首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cocos2D中忽略具有相同碰撞组的对象之间的collisons

在Cocos2D中忽略具有相同碰撞组的对象之间的collisons
EN

Stack Overflow用户
提问于 2014-05-27 22:11:06
回答 1查看 557关注 0票数 0

我有一个收集陨石的基本火箭游戏。非常基本。这场比赛很好,除了我一直在努力解决的一个真正的烦恼,但不能。

当火箭与陨石相撞时:

代码语言:javascript
复制
-(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair rocket:(CCNode *)nodeA meteorite:(CCNode *)nodeB{
[self meteoriteRemoved:nodeB];
[self spawnMeteorite];
score ++;
_scoreLabel.string = [NSString stringWithFormat:@"%d", score];
}

它被移除并重生。这很好,但是如果陨石离另一个陨石很近,火箭撞到一个,它就像斯诺克球一样把另一个击倒。我要他们保持静止直到火箭与他们相撞。

有没有办法让同一个碰撞组中的精灵忽略对方?

编辑**

我在一个循环中加载陨石,这个类有:

代码语言:javascript
复制
@implementation Meteorite

- (void)didLoadFromCCB {
self.physicsBody.collisionType = @"meteorite";
}

@end

然后使用以下方法生成它们:

代码语言:javascript
复制
-(void)spawnMeteorite{
CCNode *meteorite = [CCBReader load:@"Meteorite"];

CGFloat randomX = ((double)arc4random() / ARC4RANDOM_MAX);
CGFloat randomY = ((double)arc4random() / ARC4RANDOM_MAX);
CGFloat rangeX = 320 - 48;
CGFloat rangeY = 2880 - 200;

meteorite.position = ccp((randomX * rangeX)+24, (randomY * rangeY)+ _ground.contentSize.height + _rocket.contentSize.height);
meteorite.physicsBody.velocity = ccp(0,0);
[_physicsNode addChild:meteorite];

}

下面的代码给出了一条陨石在飞进一组时经常击中的日志,而大多数陨石都被遗忘了!

代码语言:javascript
复制
-(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair meteorite:(CCNode *)nodeA meteorite:(CCNode *)nodeB{
NSLog(@"Meteorite HIT");
}

谢谢你调查这件事,希望能帮上忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 23:32:02

具有相同碰撞组的对象不相互碰撞。这些文件指出:

代码语言:javascript
复制
/**
 *  The body's collisionGroup, if two physics bodies share the same group id, they don't collide. Defaults to nil.
 */
@property(nonatomic, assign) id collisionGroup;

您能分享分配碰撞组给物理对象的代码吗?这里您需要小心,因为“相同”碰撞组意味着与指向同一个对象的指针完全相同!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23899813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档