Якорные точки в Swift Bugg?

swift sprite-kit anchorpoint

1946 просмотра

1 ответ

Я попытался понять основы опорных точек в быстром чтении этого: https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.html

Я понял, что в siwft, с набором спрайтов, точка привязки сцены находится в левом нижнем углу экрана.

Так что, если я позиционирую узел следующим образом:

myNode.position = CGPoint(x: 0, y: 0)
self.addChild(myNode)

Это не отображается на мой взгляд. Поэтому я попробовал еще одну вещь:

 myNode.position = CGPoint(x: middleOfmyView, y: 0)
    self.addChild(myNode)

И теперь я вижу половину вершины моего квадрата. Итак, я вижу 20 пикселей вверх от нижней части экрана.

Итак, я добавил:

  myNode.position = CGPoint(x: middleOfmyView, y: 0+myNode.frame.size.height/2)
        self.addChild(myNode)

И теперь я могу видеть весь свой квадрат в середине экрана.

Затем я положил его в x: 0 и пусть точка Y будет такой:

 myNode.position = CGPoint(x: 0, y: 0+myNode.frame.size.height/2)
 self.addChild(myNode)

И теперь я не вижу своего узла, даже если в правом нижнем углу экрана написано «1 узел»!

Так что мне интересно, действительно ли точка 0,0 экрана iPhone находится в левом нижнем углу экрана? Тогда где якорный узел моего спрайтового узла? Как я могу поставить свой квадрат прямо в левом нижнем углу экрана?

Это все только для того, чтобы понять, как все работает… Заранее большое спасибо за помощь :)

Я использую Xcode 7.3.1 и до сих пор не понимаю, почему точка 0 говорит о том, что я не вижу свои вещи ... это определенно ошибка?

Автор: Julien Источник Размещён: 08.11.2019 11:18

Ответы (1)


3 плюса

SKSpritenodes по умолчанию имеет значение anchorPoint (0.5, 0.5), что означает, что середина узла идет туда, где установлена ​​позиция. Чтобы изменить anchorPoint, сделайте это: node.anchorPoint = CGPoint(x: 0, y: 0)этот пример устанавливает anchorPoint узла в его нижний левый угол. Имейте в виду, что изменение anchorPoint также изменяет источник вращения, и что значения anchorPoint находятся в диапазоне от 0 до 1. Чтобы поместить квадрат в нижний левый угол:

myNode.anchorPoint = CGPoint(x: 0, y: 0)
myNode.position = CGPoint(x: frame.minX, y: frame.minY)

Если вам нужна помощь с чем-либо еще (или если я не покрыл то, что вы хотели), не стесняйтесь спрашивать меня, и я сделаю все возможное, чтобы помочь

Автор: Nik Размещён: 20.08.2016 07:18
Вопросы из категории :
32x32