我有两个Sprite节点:
-(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
static const uint32_t playerCategory = 0x1 << 0;
static const uint32_t enemyCategory = 0x1 << 1;我如何检测他们是否接触,以便我可以添加一个行动的结果,他们的接触?
发布于 2014-02-13 19:42:54
你的碰撞检测需要代表的方法。
在MyScene.h中,您的代码应该如下所示:
@interface MyScene : SKScene <SKPhysicsContactDelegate>在您的MyScene.m中,在initWithSize中添加以下内容
self.physicsWorld.contactDelegate = self;现在您需要实现委托方法didBeginContact。
- (void)didBeginContact:(SKPhysicsContact *)contact {
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (playerCategory | enemyCategory)) {
// Do your stuff
}
}https://stackoverflow.com/questions/21762200
复制相似问题