2015-04-29 4 views
1

Im пытается получить столкновение между двумя спрайтами, но он не работает, они попали и не обнаружен контакт.столкновение между двумя спрайтами

В GameScene.h

@interface GameScene : SKScene <SKPhysicsContactDelegate>{ 

*

В GameScene.m

static const uint32_t ballCategory = 1<<0; 
static const uint32_t obs1Category = 1<<1; 

*

ball = [SKSpriteNode spriteNodeWithImageNamed:@"ball_cross"]; 
ball.position = CGPointMake(bx,by); 
ball.name = @"ball"; 
ball.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ball.size]; 
ball.physicsBody.dynamic = YES; 
ball.physicsBody.categoryBitMask = ballCategory; 
ball.physicsBody.collisionBitMask = obs1Category; 
ball.physicsBody.contactTestBitMask = obs1Category; 

*

obs1 = [SKSpriteNode spriteNodeWithImageNamed:@"obs1"]; 
obs1.position = obs1XY; 
obs1.name = @"obs1"; 
obs1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:obs1.size]; 
obs1.physicsBody.categoryBitMask = obs1Category; 
obs1.physicsBody.contactTestBitMask = ballCategory; 
obs1.physicsBody.collisionBitMask = ballCategory; 
obs1.physicsBody.dynamic = YES; 

*

-(void)didBeginContact:(SKPhysicsContact *)contact{ 

    NSLog(@"hit"); 
} 
+0

Поместите физический делегат в ваш файл реализации. – sangony

+0

Будет ли что-нибудь делать? – cheesey

ответ

1

В столкновении бит маски и контактных тест битовых масок, которые необходимо добавить два тела, которые вы хотите получать уведомления от.

И.Е.:

obs1.physicsBody.categoryBitMask = obs1Category; 
 
obs1.physicsBody.contactTestBitMask = ballCategory; 
 
obs1.physicsBody.collisionBitMask = ballCategory || obs1Category; 
 

 
ball.physicsBody.categoryBitMask = ballCategory; 
 
ball.physicsBody.collisionBitMask = obs1Category || ballCategory; 
 
ball.physicsBody.contactTestBitMask = obs1Category;

Сон, когда контакт битовая маска соответствует комбинации между шаром и ORBS уведомление будет сгенерирован.

Я надеюсь, что это поможет спариться!