我也是游戏开发和SpriteKit的新手,用它来处理小游戏。不幸的是,我无法在两台设备上正确显示SKSpriteNode
- 3,5英寸和4英寸。
我对Cocos2d有一些经验,所有定位的东西都是在SpriteBuilder工具中制作的,非常方便。在SpriteKit中它应该以编程方式完成..问题是节点的规模在设备上有所不同,看看:
这里是 MyScene.m :
中的定位代码-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
_screenRect = [[UIScreen mainScreen] bounds];
_screenHeight = _screenRect.size.height;
_screenWidth = _screenRect.size.width;
SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
[background setPosition:CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))];
[self addChild:background];
_grid = [[DVGrid alloc] initGrid];
[_grid setScale:0.65f];
[_grid setAnchorPoint:CGPointMake(0.0f, 0.5f)];
[_grid setPosition:CGPointMake(10.0f, _screenHeight/2)];
[self addChild:_grid];
}
return self;
}
和 DVGrid.m 的初始化,它是SKSpriteNode的子类:
- (instancetype)initGrid {
self = [super initWithImageNamed:@"grid"];
if (self) {
[self setUserInteractionEnabled:YES];
}
return self;
}
这里有什么问题?
答案 0 :(得分:3)
一直回到你创建场景的地方。看起来您可能将场景的scaleMode设置为纵横填充,如果您正在设计3.5然后升级,则可能会导致此行为。
[scene setScaleMode:SKSceneScaleModeAspectFill];
我建议切换到不同的比例模式,例如SKSceneScaleModeResizeFill
,这样可以产生预期的结果。