Ios SpriteKit-在3.5英寸和4英寸设备上,SKSpriteNode的刻度不同
我对游戏开发和SpriteKit也是新手,用它做小游戏。不幸的是,我无法在这两台设备(3,5英寸和4英寸)上正确显示Ios SpriteKit-在3.5英寸和4英寸设备上,SKSpriteNode的刻度不同,ios,position,sprite-kit,scale,skspritenode,Ios,Position,Sprite Kit,Scale,Skspritenode,我对游戏开发和SpriteKit也是新手,用它做小游戏。不幸的是,我无法在这两台设备(3,5英寸和4英寸)上正确显示SKSpriteNode 我有一点Cocos2d的经验,所有的定位工具都是在SpriteBuilder工具中制作的,非常方便。在SpriteKit中,它应该以编程方式完成。。问题在于设备上的节点比例不同,请看: 这里是MyScene.m中的定位代码: -(id)initWithSize:(CGSize)size { if (self = [super initWith
SKSpriteNode
我有一点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的init,它是SKSpriteNode的子类:
- (instancetype)initGrid {
self = [super initWithImageNamed:@"grid"];
if (self) {
[self setUserInteractionEnabled:YES];
}
return self;
}
这里出了什么问题?一直回到您创建场景的地方。看起来您可能将场景的scaleMode设置为aspect fill,如果您是为3.5进行设计,然后进行放大,则可能会导致此行为
[scene setScaleMode:SKSceneScaleModeAspectFill];
我建议切换到不同的缩放模式,如
SKSceneScaleModeResizeFill
,这应该会产生预期的效果。出于某种原因,我在为iPhone 5s开发时发现了奇怪的缩放问题,并在将其添加到场景之前在内存中创建一个SKSpriteNode。这个解决方案很有魅力。谢谢