나는 didBeginContact
대리자 메서드에 동적으로 SKSpriteNode
을 추가 해요 :SKSpriteNode를 동적으로 추가 할 수 없습니까?
여기 내 코드
-(void)adBall
{
SKSpriteNode *obj = [[SKSpriteNode alloc]initWithImageNamed:@"ball.png"];
obj.physicsBody = [SKPhysicsBody bodyWithTexture:obj.texture size:obj.texture.size];
obj.position = CGPointMake(100, 100);
obj.name = OBSTACLE_KEY;
obj.physicsBody.categoryBitMask = BallCategory1;
obj.physicsBody.contactTestBitMask = GreenLineCategory | RedLineCategory ;;
obj.physicsBody.collisionBitMask = GreenLineCategory | RedLineCategory ;;
obj.physicsBody.affectedByGravity = YES;
obj.physicsBody.dynamic = YES;
obj.physicsBody.friction = 0.0f;
obj.physicsBody.linearDamping = 0.0f;
obj.physicsBody.restitution = 1.0f;
obj.physicsBody.allowsRotation = NO;
[obj.physicsBody applyForce:CGVectorMake(200, 300)];
}
-(void)didBeginContact:(SKPhysicsContact *)contact
{
SKPhysicsBody *firstBody, *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else
{
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
if ([firstBody.node.name isEqual: OBSTACLE_KEY] && ([secondBody.node.name isEqual: BLACKLINE_KEY]))
{
[self adBall];
}
}
입니다하지만 그냥 바닥에 공을 표시하고 사라 화면에 표시 캔트.
그리고 [self adBall];
을 didMoveToView
으로하면 잘 작동합니다.
그래서 내가 틀린 곳을 말해 주시겠습니까?
들으. 거기에 줄을 추가하지만 그것은 didMoveToView 대리자 메서드에서 메서드를 호출 할 때 작동합니다. didBeginContact에서 작동하지 않습니다. – LanWanMan