【发布时间】:2014-07-20 18:36:19
【问题描述】:
您好,我在使用碰撞检测时遇到问题。发生的事情是当弹丸(子弹)击中外星人时会产生粒子火花。问题是有时我认为这个函数会混淆弹丸和怪物,所以有时它会在子弹被摧毁的地方产生火花。
问。是什么决定了哪个精灵命中哪个。
谁能给点建议?
- (void)projectile:(SKSpriteNode *)projectile didCollideWithMonster:(SKSpriteNode *)monster
{
[projectile removeFromParent];
canfire = true;
NSString *path = [[NSBundle mainBundle]pathForResource:@"spark" ofType:@"sks"];
SKEmitterNode *spark = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
spark.position = monster.position;
SKAction *pause = [SKAction waitForDuration:1.0];
SKAction *remove = [SKAction removeFromParent];
[spark runAction:[SKAction sequence:@[pause,remove]]];
spark.position = monster.position;
[monster addChild:spark];
[monster removeFromParent];
}
是的,肯定会把弹丸和怪物混为一谈:
2014-07-20 19:56:35.279 Space Warz[9420:60b] First Body name = bullet
2014-07-20 19:56:35.280 Space Warz[9420:60b] Hit
2014-07-20 19:56:35.281 Space Warz[9420:60b] Monster Name: crystalship
2014-07-20 19:56:40.878 Space Warz[9420:60b] Contact
2014-07-20 19:56:40.879 Space Warz[9420:60b] First Body name = crystalship
2014-07-20 19:56:40.880 Space Warz[9420:60b] Hit
2014-07-20 19:56:40.881 Space Warz[9420:60b] Monster Name: bullet
2014-07-20 19:56:43.845 Space Warz[9420:60b] Contact
2014-07-20 19:56:43.846 Space Warz[9420:60b] First Body name = bullet
2014-07-20 19:56:43.847 Space Warz[9420:60b] Hit
2014-07-20 19:56:43.848 Space Warz[9420:60b] Monster Name: crystalship
2014-07-20 19:56:43.855 Space Warz[9420:60b] Contact
2014-07-20 19:56:43.856 Space Warz[9420:60b] First Body name = bullet
2014-07-20 19:56:43.857 Space Warz[9420:60b] Hit
2014-07-20 19:56:43.858 Space Warz[9420:60b] Monster Name: crystalship
【问题讨论】:
-
#LearnCocos2D 你编辑了什么?
-
听起来射弹和怪物参数并不总是你“期望”的那样。该方法在哪里被调用?发布该代码。您拥有的方法没有确定哪个是哪个,它假设您正在传递正确的对象以匹配参数,对吗?
-
如何调用 didCollideWithMonster 方法?
标签: sprite-kit collision-detection skspritenode