首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sprite套件碰撞检测

Sprite套件碰撞检测
EN

Stack Overflow用户
提问于 2014-03-19 10:53:55
回答 2查看 9.1K关注 0票数 3

嗨,我正在尝试在我的游戏中设置碰撞检测,我想添加碰撞检测,这样当气球击中钉子时,它们就会爆裂。我看过Ray Wenderliches的教程,但我不能理解它,因为它不适用于我的情况。有什么办法可以帮我解决这个问题吗?

尖峰在屏幕的顶部,气球在底部繁殖。

EN

回答 2

Stack Overflow用户

发布于 2014-03-31 16:09:29

设置两个对象之间的upp碰撞的基础是首先设置表示可能发生碰撞的不同对象的upp常量。我通常会创建一个constants.h文件,其中保存了在整个游戏/应用程序中使用的所有变量。

在constants.h文件中声明以下内容,或者仅将它们声明为类中的全局变量:

代码语言:javascript
复制
static const int balloonHitCategory = 1;
static const int spikeHitCategory = 2;

你现在要做的是为你的气球和扣球建立物理模型。

代码语言:javascript
复制
SKSpriteNode *ballooon = [SKSpriteNode spriteNodeWithImageNamed:@"yourimagefilename"];
ballooon.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:yourSize];

ballooon.physicsBody.categoryBitMask = balloonHitCategory;
ballooon.physicsBody.contactTestBitMask = spikeHitCategory;
ballooon.physicsBody.collisionBitMask =  spikeHitCategory;

您应该为这两个spritenode设置大小和图像

代码语言:javascript
复制
SKSpriteNode *spikes = [SKSpriteNode spriteNodeWithImageNamed:@"yourimagefilename"];
spikes.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(yourSizeX, yourSizeY)];

spikes.physicsBody.categoryBitMask = spikeHitCategory;
spikes.physicsBody.contactTestBitMask = balloonHitCategory;
spikes.physicsBody.collisionBitMask =  balloonHitCategory;

对于碰撞,请设置以下方法:

代码语言:javascript
复制
-(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文件中添加。

代码语言:javascript
复制
@interface myScene : SKScene <SKPhysicsContactDelegate>

@end

并在.m文件的初始化函数中添加:

代码语言:javascript
复制
-(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

票数 15
EN

Stack Overflow用户

发布于 2014-04-23 00:59:40

我刚刚发布了一个用于Sprite Kit的插件2D碰撞引擎。它仍处于早期阶段,但可能会对您有所帮助:https://github.com/henryeverett/ToastCollisions2D

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

https://stackoverflow.com/questions/22495285

复制
相关文章

相似问题

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