雪碧套件碰撞检测

嗨,我想在我的游戏中设置碰撞检测,我想添加碰撞检测,所以当气球击中他们stream行的尖峰。 我已经看过Ray Wenderliches教程,但是我无法弄清楚,因为它不适用于我的情况。 任何想法如何设置为我的情况?

钉在屏幕的顶部,气球在底部产卵。

在两个对象之间设置upp碰撞的基础是首先设置upp常量,代表可能发生碰撞的不同对象。 我通常做一个constants.h文件,我保留所有的variables将通过游戏/应用程序使用。

在constants.h文件中声明以下内容,或者在类中声明它们为全局variables:

static const int balloonHitCategory = 1; static const int spikeHitCategory = 2; 

你现在想要做的是为你的气球和尖刺设置物理

 SKSpriteNode *ballooon = [SKSpriteNode spriteNodeWithImageNamed:@"yourimagefilename"]; ballooon.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:yourSize]; ballooon.physicsBody.categoryBitMask = balloonHitCategory; ballooon.physicsBody.contactTestBitMask = spikeHitCategory; ballooon.physicsBody.collisionBitMask = spikeHitCategory; 

你应该设置你的大小,并为这两个spritenodes设置你的图像

 SKSpriteNode *spikes = [SKSpriteNode spriteNodeWithImageNamed:@"yourimagefilename"]; spikes.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(yourSizeX, yourSizeY)]; spikes.physicsBody.categoryBitMask = spikeHitCategory; spikes.physicsBody.contactTestBitMask = balloonHitCategory; spikes.physicsBody.collisionBitMask = balloonHitCategory; 

为了build立以下方法进行碰撞:

 -(void)didBeginContact:(SKPhysicsContact *)contact { SKPhysicsBody *firstBody, *secondBody; firstBody = contact.bodyA; secondBody = contact.bodyB; if(firstBody.categoryBitMask == spikeHitCategory || secondBody.categoryBitMask == spikeHitCategory) { NSLog(@"balloon hit the spikes"); //setup your methods and other things here } } 

在碰撞之前,你也应该添加。 在你的场景中.h文件添加。

 @interface myScene : SKScene <SKPhysicsContactDelegate> @end 

并在init函数的.m文件中添加:

 -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { self.physicsWorld.contactDelegate = self; } return self; } 

有关碰撞处理的更多信息,请查看苹果文档和冒险游戏示例: https : //developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/HandlingCollisions/HandlingCollisions.html#//apple_ref/doc/uid/ TP40013140-CH5-SW1

我刚刚发布了Sprite Kit的插件2D碰撞引擎。 它还处于早期阶段,但可以帮助你: https : //github.com/henryeverett/ToastCollisions2D