Позиция SKShapeNode на одной линии с землей

Я просто пытаюсь нарисовать прямоугольник и поместить его в нижнюю левую часть экрана.

    var rectW:CGFloat  = CGFloat(200.0)
    var rectH:CGFloat = ceil(self.frame.height * 0.15)

    var rect = SKShapeNode(rectOfSize: CGSize(width: rectW, height: rectH));

    let posX:CGFloat = 0.0 + (rect.frame.width / 2)
    let posY:CGFloat = self.frame.height - (self.frame.height - rect.frame.height)

    rect.position = CGPointMake(posX,posY)
    rect.fillColor = SKColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
    rect.lineWidth = 1

    self.addChild(rect)

Проблема в том, что, хотя я считаю, что все математические расчеты верны, прямоугольник составляет около 38 точек/пикселей под экраном, как вы можете видеть на изображении ниже (белая рамка показывает предел).

Для вашей информации вот вывод позиций, высоты и ширины.

PosX: 100.5
PosY: 117.0
Rect Width: 201.0
Rect Height: 117.0
Frame Height: 768.0
Frame Weight: 1024.0

Прямоугольник под экраном

Если я просто возьму эту строку, но добавлю 38 точек/пикселей, это сработает, но почему? Есть ли что-то, что мне не хватает?

    let posY:CGFloat = self.frame.height - (self.frame.height - rect.frame.height) + 38

Прямоугольник в правильном положении


person Eli Stone    schedule 23.10.2014    source источник
comment
проверьте режим масштабирования вашей сцены, возможно, он настроен на заполнение, не вписывающееся   -  person LearnCocos2D    schedule 24.10.2014


Ответы (1)


Я нашел ответ с помощью следующих двух ответов:

Система координат SpriteKit перепуталась

Проблемы с пониманием системы координат SpriteKit с использованием Swift

Проблема заключается в том, что GameScene.sks имеет другой размер.

Откройте GameScene.sks и перейдите к пункту «Показать SKNodeInspector» в третьем поле в верхней правой части экрана.

Затем установите размеры 320 x 568.

Сохраните, затем запустите. Должен работать.

person Eli Stone    schedule 24.10.2014