两个精灵之间的碰撞

collision between two sprites

我试图让两个 sprite 之间发生碰撞,但它不起作用,它们碰撞并且未检测到接触。

In GameScene.h

@interface GameScene : SKScene <SKPhysicsContactDelegate>{

*

In 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");
}

在碰撞位掩码和接触测试位掩码中,您需要添加要从中接收通知的两个实体。

即:

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;

儿子,当接触位掩码匹配球和球体之间的组合时,将生成通知。

希望对朋友有帮助!