Ios SpriteKit-在3.5英寸和4英寸设备上,SKSpriteNode的刻度不同

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

我对游戏开发和SpriteKit也是新手,用它做小游戏。不幸的是,我无法在这两台设备(3,5英寸和4英寸)上正确显示
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。这个解决方案很有魅力。谢谢