在碰撞位置添加Sprite - SpriteKit

时间:2014-02-19 16:22:11

标签: ios objective-c sprite-kit

我想要做的是在大型小行星与激光束相撞后,在大型小行星的位置添加一个介质小行星。

我的问题是,中小行星总是被添加到屏幕的左下角,而不管大小行星在碰撞时的位置。

以下是我程序中的所有相关代码。

- (void) didBeginContact:(SKPhysicsContact *)contact
{
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

if (collision == (CNPhysicsCategoryLaserbeam | CNPhysicsCategoryAsteroidLarge))
    {
        [self enumerateChildNodesWithName:@"laserbeam"
                               usingBlock:^(SKNode *node, BOOL *stop)
         {
             [node removeFromParent];
             *stop = YES;
             NSLog(@"laser explode");
         }];

        [self enumerateChildNodesWithName:@"large_asteroid"
                               usingBlock:^(SKNode *node, BOOL *stop)
         {
             CGPoint oldPosition = CGPointMake(node.position.x, node.position.y);
             NSLog(@"oldPosition x: %f, y: %f", oldPosition.x, oldPosition.y);
             [node removeFromParent];
             [self addMediumAsteroid:oldPosition];
             *stop = YES;
             NSLog(@"large explode");
         }];


    }
}


- (void) addMediumAsteroid:(CGPoint)position
{
    _asteroidMedium.position = position;
    NSLog(@"postion x: %f, y: %f", position.x, position.y);
    [self addChild:_asteroidMedium];
    NSLog(@"add medium");
}

0 个答案:

没有答案