2014-11-30 2 views
1

im игра, которую я разрабатываю, у меня есть различные узлы, которые увеличивают масштаб.Масштабирование SkSpriteNodes с помощью SpriteKit

В зависимости от устройства (ipad/iphone) они имеют максимальный размер между 50-128 (выход println("\(size)")), поэтому я должен максимальный размер должен быть 3x128, правильно?

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

  • начального размера (0,0)
  • окончательного размера (макс, макс) - это тех размеры, упомянутые выше

я масштабирование с таким SKAction:

let imageName = NameGenerator.defaultGenerator.generateAssetName(properties: properties) 
let texture = SKTexture(imageNamed: imageName) 
let node = SKSpriteNode(texture: texture) 

let initialSize = CGSizeMake(1, 1) 
let scaleFactor = max/initialSize.width 
let actionScale = SKAction.scaleTo(scale, duration: duration) 

node.runAction(scale) 

пока все хорошо. приложение работает плавно, и все работает, но

  • узлы сильно пикселизации во время масштабирования анимации

мои активы в настоящее время хранятся только в @3x размером в 300x300px

вопрос

  • Какой оптимальный формат текстуры (png, svg, ...) - есть ли способ использовать векторные изображения?
  • Как вы думаете, оптимальный размер текстуры для этого szenario?
  • Я делаю масштабирование/инициализацию справа или должен ли я сделать что-то другое, чтобы избежать пикселизации?

ответ

2

Все будет в порядке, если вы используете png-файлы. Векторные форматы не поддерживаются. Если вы хотите их использовать, вам придется преобразовать его в формат растрового изображения, например png.

Что касается оптимального размера текстуры, это действительно будет вопросом проб и ошибок, а также взвешиванием компромиссов.

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

Что вы можете попытаться сделать, это определить, что, по вашему мнению, будет «оптимальным» или наиболее часто используемым. И используйте этот размер в качестве размера шкалы x1.

Game dev - все о балансирующем действии ресурсов/производительности и о том, что испытывает пользователь. Вам нужно попробовать найти лучший компромисс для вашей игры.

BTW, я нашел это заявление немного запутанным:

в зависимости от устройства (Ipad/iphone) они имеют максимальный размер между 50-128 (выход Println ("(размер)")), поэтому я предполагаю, что максимальный размер должен быть 3x128, не так ли?

Я не совсем уверен, что вы пытаетесь сказать этим.

+0

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

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