在我的spritekit游戏中,我通过更新方法随机创建Stone.这是我随机创建石头的代码
//Create random island -(void)createRandomStone:(NSMutableArray *)imageArray { int getRandomNumberCoordinate = [self getRandomNumberBetween:(int)0 to:(int)768]; int getRandomStoneImage = [self getRandomNumberBetween:0 to:(int)([imageArray count] - 1)]; NSLog(@"Stone Image name = %d", getRandomStoneImage); SKSpriteNode *createStone = [SKSpriteNode spriteNodeWithTexture:[imageArray objectAtIndex:getRandomStoneImage]]; if((getRandomNumberCoordinate + createStone.size.height / 2) > 768 ) createIsland.position = CGPointMake(_myScreenSize.width + createStone.size.width, 768 - createStone.size.height / 2); else if((getRandomNumberCoordinate - createStone.size.height / 2) < 0 ) createStone.position = CGPointMake(_myScreenSize.width + createStone.size.width, 0 + createIsland.size.height / 2); else createStone.position = CGPointMake(_myScreenSize.width + createStone.size.width, getRandomNumberCoordinate); createStone.name = @"Stone"; createStone.zPosition = 3; [self addChild:createStone]; //Apply physics on the Stone createStone.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize: CGSizeMake(createStone.size.width - createStone.size.width / 4, createStone.size.height - createStone.size.height / 6)]; createStone.physicsBody.categoryBitMask = CollisionTypeStone; createStone.physicsBody.contactTestBitMask = CollisionTypeMan; createStone.physicsBody.usesPreciseCollisionDetection = YES; createStone.physicsBody.collisionBitMask = 0; }
石头从坐标1024移动到0,如果任何石头越过0坐标,石头将通过使用代码移除
-(void)updateStonePosition:(NSString *)whichDirection andMoveAmount:(float)speed { for (SKNode* node in self.children) { if([node.name isEqualToString:@"Stone"]) { node.position = CGPointMake(node.position.x - speed, node.position.y); if(node.position.x < -node.frame.size.width / 2) [node removeFromParent]; } } }
以上两种方法都是从update方法调用的.如果该男子击中任何5石头,那么游戏将再次重新加载.重新加载代码是:
[self.view presentScene:[[MyScene alloc] initWithSize:self.size] transition:[SKTransition doorsCloseHorizontalWithDuration:0.5f]];
游戏重新加载,但几秒钟后错误信息显示EXC_BAD_ACCESS(代码= 2,地址= 0x0)就行了
SKSpriteNode *createStone = [SKSpriteNode spriteNodeWithTexture:[imageArray objectAtIndex:getRandomStoneImage]];
请帮忙.提前致谢.