我想要做的是在大型小行星与激光束相撞后,在大型小行星的位置添加一个介质小行星。
我的问题是,中小行星总是被添加到屏幕的左下角,而不管大小行星在碰撞时的位置。
以下是我程序中的所有相关代码。
- (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");
}