新场景是根据其帧大小创建的,但每次都会变小。为什么呢?

时间:2015-08-30 11:23:22

标签: objective-c physics skscene

我正在编写一个游戏,其中用户必须使用某些板块防止掉落的物体(岩石)通过屏幕按钮,每次点击在该位置制作一个盘子,但他每次只能有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 对不起,因为我没有足够的声誉,看起来我无法嵌入图片!

为什么每个场景都会挤压?

1 个答案:

答案 0 :(得分:1)

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

寻找类似这样的东西scene.scaleMode = SKSceneScaleModeAspectFill通常SKScenes会根据设备的屏幕大小自动缩放,而SKScene则可以为你提供一个场景。

你的照片中的场景显示场景有完整的封面,但它们是缩放的。

  

在不控制比例的情况下,很难处理精灵大小。我建议骑上每个比例模式,并将它们全部记录下来并控制自己的比例。   如果您不打算放大/缩小,我认为在您的游戏中就是这种情况,您只需要在每次场景转换后将场景比例重置为1。