2015-08-30 40 views
2

我正在写一个游戏,其中用户必须使用一些盘子来防止掉落的物体(岩石)通过屏幕的按钮,每次点击在该位置打板时,他每次只能有5个盘子,然后单击第六点消失了第一块板,同时创造了一个新的。 这是关于我的游戏机制如何工作的简要介绍。从场景尺寸创建新场景,但每次都会变得越来越小。为什么?

下面是我的代码中使用物理计算落体(精灵)的部分,如果它们变得超过10个,游戏结束消息将显示,代码重新开始游戏,一个新游戏。有一个新的游戏,我需要

-(void)didSimulatePhysics 
{ 
    [self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) { 
     if (node.position.y < 0) 
     { 
      ScoreNum++; 
      [node removeFromParent]; 
      score.text = [NSString stringWithFormat:@"%@ %li",ScoreMSG,(long)ScoreNum]; 
      if (ScoreNum > 10) 
      { 
       score.fontSize = 40; 
       score.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 
       score.text = @"Game Over!";    
       SKScene *spaceshipScene = [[GameScene alloc] initWithSize:CGRectMake(0, 0,CGRectGetMaxY(self.frame),CGRectGetMaxX(self.frame)).size];     
       printf("%f %f",CGRectGetMidX(self.frame),CGRectGetMidX(self.frame)); 
       SKTransition *doors = [SKTransition doorsOpenVerticalWithDuration:0.25]; 
       [self.view presentScene:spaceshipScene transition:doors]; 
       ScoreNum = 0;   
      } 
     } 
    }]; 
} 

GameScene从SKScene子类这样

#import <SpriteKit/SpriteKit.h> 
@interface GameScene : SKScene 
@end 

代码工作找到,但板块(所有屏幕上的精灵)会从两侧

挤压

下面的图片显示的结果,第一次,第二次和第三次,我需要10个声望,包括3张图片,所以我不得不将它们合并成一张图片,在这里。 https://www.imageupload.co.uk/images/2015/08/30/123.png Result 对不起,看起来我不能嵌入图像,因为我没有足够的声誉!

为什么我的场景会挤压?

+0

可能是SpriteKit错误,请考虑将其转发给苹果SpriteKit社区。 – Rassam

回答

1

看起来像你在你的viewController.viewDidLoad中设置了一个scaleMode来处理你的游戏场景,你的物理代码没有问题(在你的问题中)。

寻找类似这样的东西scene.scaleMode = SKSceneScaleModeAspectFill通常SKScenes会根据设备的屏幕尺寸自动缩放,并且SKScene会为您提供场景。

您的照片中的场景显示场景具有完整且完整的封面,但已缩放。

在控制规模的同时,处理精灵大小很难。我建议搭乘每种比例模式,并将它们全部标注出来,并控制你的自我规模。 如果你不打算放大/缩小,因为我相信你的游戏就是这种情况,你只需要在每次场景转换后将场景比例重置为1。

+1

我正在使用'SKSceneScaleMode.Fill'并将其解决。 – Imzich