我正在编写一个游戏,其中用户必须使用某些板块防止掉落的物体(岩石)通过屏幕按钮,每次点击在该位置制作一个盘子,但他每次只能有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 对不起,因为我没有足够的声誉,看起来我无法嵌入图片!
为什么每个场景都会挤压?
答案 0 :(得分:1)
看起来您在viewController.viewDidLoad
中设置了一个处理游戏场景的scaleMode,您的物理代码没有任何问题(在您的问题中)。
寻找类似这样的东西scene.scaleMode = SKSceneScaleModeAspectFill
通常SKScenes会根据设备的屏幕大小自动缩放,而SKScene则可以为你提供一个场景。
你的照片中的场景显示场景有完整的封面,但它们是缩放的。
在不控制比例的情况下,很难处理精灵大小。我建议骑上每个比例模式,并将它们全部记录下来并控制自己的比例。 如果您不打算放大/缩小,我认为在您的游戏中就是这种情况,您只需要在每次场景转换后将场景比例重置为1。