首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪碧试剂盒-检测接触

雪碧试剂盒-检测接触
EN

Stack Overflow用户
提问于 2014-02-13 18:10:55
回答 1查看 1.7K关注 0票数 2

我有两个Sprite节点:

代码语言:javascript
复制
-(void)createPlayer {
    SKSpriteNode *player = [SKSpriteNode node];

    player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
    player.physicsBody.categoryBitMask = playerCategory;
    player.physicsBody.contactTestBitMask = enemyCategory;

    player.position = CGPointMake(100, 160);
    player.name = @"player";
    player.zPosition = 100;

    [self addChild:player];
}

-(void)createEnemy {
    SKSpriteNode *enemy = [SKSpriteNode node];

    enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
    enemy.physicsBody.categoryBitMask = enemyCategory;
    enemy.physicsBody.contactTestBitMask = playerCategory;

    enemy.position = CGPointMake(300, 160);
    enemy.name = @"player";
    enemy.zPosition = 100;

    [self addChild:enemy];
}

下面是MyScene.h

代码语言:javascript
复制
static const uint32_t playerCategory =  0x1 << 0;
static const uint32_t enemyCategory =  0x1 << 1;

我如何检测他们是否接触,以便我可以添加一个行动的结果,他们的接触?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 19:42:54

你的碰撞检测需要代表的方法。

MyScene.h中,您的代码应该如下所示:

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

在您的MyScene.m中,在initWithSize中添加以下内容

代码语言:javascript
复制
self.physicsWorld.contactDelegate = self;

现在您需要实现委托方法didBeginContact

代码语言:javascript
复制
- (void)didBeginContact:(SKPhysicsContact *)contact {
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

    if (collision == (playerCategory | enemyCategory)) {
        // Do your stuff
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21762200

复制
相关文章

相似问题

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