2015-07-02 2 views
1

Есть несколько проблем, с автоматической верстки, которые, кажется, чтобы представить некоторые несоответствия с одной сцены к другой моей игры SpriteKit:Противоречивые авто-макета рендеринга

Во-первых, несмотря на использование такой же произведение искусства на земле в первой и второй сценах, произведение становится меньше в первом. Я не знаю, как это возможно. Они оба являются файлами PNG, а две сцены, в которых хранятся изображения, - это .swift, и я загружал одни и те же изображения в imagesx.cassets. Но когда открывается первая сцена, наземный узел короче и тоньше, чем во второй сцене (которую я создал вначале).

Другой несогласованность В моей второй сцене, когда я использую:

self.groundbar.anchorPoint = CGPointMake(0.0, 0.5) 
self.groundbar.position = CGPointMake(CGRectGetMinX(self.frame), CGRectGetMinY(self.frame) + (self.groundbar.size.height)/2) 

groundbar прижимается именно в нижней части моего экрана, на полпути через середину groundbar (как указано у-значения) ,

Теперь, когда я пробую этот САМОЙ код на первой сцене, земля нигде не отображается на экране. Я думал, что это может быть связано с тем странным фактом, что в первой сцене земля становится меньше, но тогда это не имеет значения, потому что это автоматический макет и ссылается на конкретные характеристики узла.

Кажется, что я почти занимаюсь двумя отдельными наборами ограничений автоматической компоновки или чего-то еще. Первая сцена - физический мир, а вторая сцена - НЕ, но когда я удалил то, что земля в первой сцене все же не отображалась должным образом.

Даже когда я пытаюсь изменить anchorPoint, текстура узла перемещается визуально, но физика столкновения остается неизменной.

Почему основная разница в автомакете? Почему мои две части искусства разных размеров при визуализации в одной и той же сцене, несмотря на то, что они являются одними и теми же произведениями искусства?

+0

Вы не можете использовать AutoLayout с комплектом спрайтов - AutoLayout только для UIKit. Что касается вашей проблемы, вы проверили «scaleMode» и «размер» каждой сцены? – ABakerSmith

+0

Ну Первый сцена загружается сразу после экрана запуска. У меня есть узел, который при щелчке инициализирует вторую сцену. Код, который я использовал для этого, был: scene.scalemode = .ResizeFill и scene.size = skView.bounds.size – TerranceW

+0

Используете ли вы другой «scaleMode» для каждой сцены? Это может привести к тому, что объекты будут выглядеть по-разному между сценами. – ABakerSmith

ответ

1

У вас должен быть возможность проверить, какой scaleMode используется в контроллере представления игры. Убедитесь, что scaleModes одинаковы (есть три scaleModes: .AspectFill, .AspectFit и.ResizeFill). Затем убедитесь, что якорные точки совпадают (по умолчанию, anchorPoints (x: 0, y: 0). Обе вещи могут быть проверены в ViewController игры.

+0

Удивительная информация. Спасибо. – TerranceW

Смежные вопросы