ios - SKSpriteNode位置

标签 ios objective-c sprite-kit

我正在尝试(学习如何)使用 SpriteKit 构建游戏,但我遇到了一个困扰我几个小时的问题。 我有一个名为 Tank 的类,它具有以下构造函数:

+ (instancetype)tankAtPosition:(CGPoint)position {
    Tank *tank = [self spriteNodeWithImageNamed:@"tank_base_1"];
    tank.position = position;
    tank.anchorPoint = CGPointMake(0.5, 0.5);
    return tank;
}

在我的场景中,我有以下构造函数:

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
        SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"level_bg_1"];
        background.xScale = 0.40f;
        background.yScale = 0.40f;
        background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
        [self addChild:background];

        Tank *tank = [Tank tankAtPosition:CGPointMake(CGRectGetMidX(self.frame), 512)];
        [self addChild:tank];
    }
    return self;
}

在以下渲染中编译结果: 512

现在一切正常,但是,如果我将坦克的 y 更改为 256:

Tank *tank = [Tank tankAtPosition:CGPointMake(CGRectGetMidX(self.frame), 256)];

我明白了: 256

据我所知,底部是 y = 0 和中间点 y = 512,所以当我指定 y = 256 时,它应该在屏幕的下半部分居中。为什么靠近边缘? 测试设备是 ipad retina mini,在“部署信息”>“设备”中我指定了 iPad。 我错过了什么?谢谢。

最佳答案

我想通了。帧大小都乱七八糟,因为我将游戏设置为仅横向运行。解决方法:在viewDidLoad的viewDidLayoutSubviews中初始化场景

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;

    // Create and configure the scene.
    SKScene * scene = [Level sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;

    // Present the scene.
    [skView presentScene:scene];
}

关于ios - SKSpriteNode位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253654/

相关文章:

ios - WKwebview : Cannot view app documents images in app web view iOS swift

ios - 如何从 Swift 3 中的闭包返回

ios - 了解 ibecon 距离

ios - Sprite Kit - 如果球正在远离或靠近地面,则由于脉冲和重力检测 Y

ios - Xamarin SpriteKit 使用键运行 Action

iphone - 如何确定 iPad 上的键盘覆盖了多少模态 VC?

ios - 使用 SizeToFit() 顶对齐 UILabel 导致跳转

ios - 如何裁剪图像以具有弯曲的不规则边缘?

objective-c - 制作幻灯片

swift - 如何在 SKShapeNode 中动画化 CGPath 的转换?