你好,我正在尝试在我的游戏中设置碰撞检测,我想添加碰撞检测,以便当气球撞上尖刺时它们会爆炸。我已经查看了Ray Wenderliches的教程,但是由于它不适用于我的情况,所以我无法理解。有什么想法可以为我的情况设置它?
尖刺位于屏幕顶部,气球从底部产生。
你好,我正在尝试在我的游戏中设置碰撞检测,我想添加碰撞检测,以便当气球撞上尖刺时它们会爆炸。我已经查看了Ray Wenderliches的教程,但是由于它不适用于我的情况,所以我无法理解。有什么想法可以为我的情况设置它?
尖刺位于屏幕顶部,气球从底部产生。
设置两个物体之间的碰撞,基本步骤是首先设置代表可以碰撞的不同物体的常量。我通常会创建一个constants.h文件,在其中保存将在整个游戏/应用程序中使用的所有变量。
在constants.h文件中声明以下内容,或者只需在类中声明它们作为全局变量:
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;
你应该设置你的大小并为两个精灵节点设置图像
SKSpriteNode *spikes = [SKSpriteNode spriteNodeWithImageNamed:@"yourimagefilename"];
spikes.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(yourSizeX, yourSizeY)];
spikes.physicsBody.categoryBitMask = spikeHitCategory;
spikes.physicsBody.contactTestBitMask = balloonHitCategory;
spikes.physicsBody.collisionBitMask = balloonHitCategory;
为了进行碰撞设置,按照以下方法进行:
-(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