Sprite kit – как отображать половину спрайта / текстуры / изображения

Я работаю над проектом Sprite Kit, в котором мне нужно отображать в некоторых случаях только половину существующего изображения.

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

Есть ли возможность использовать маску или что-то еще, чтобы отобразить только половину спрайта / изображения / текстуры?

One Solution collect form web for “Sprite kit – как отображать половину спрайта / текстуры / изображения”

Итак, чтобы показать только половину изображения, текстуры, спрайта, кому-то понадобится использовать SKCropNode. Единственная разумная вещь – обрезать спрайт, который вам нужен, начиная с половины, а не просто обрезать с заранее определенным размером. Этого можно добиться, установив положение узла маски.

1) создать SkSpriteNode с этой текстурой / изображением:

// Obj-C SKSpriteNode *skelet = [SKSpriteNode spriteNodeWithImageNamed:imageName]; // Swift let skelet = SKSpriteNode(imageNamed: imageName) 

2) создать SKCropNode:

 // Obj-C SKCropNode * cropNode = [SKCropNode node]; // Swift let cropNode = SKCropNode() 

3) создать маску

 // Obj-C SKSpriteNode *mask = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(skelet.frame.size.width/2, skelet.frame.size.height)]; // Swift let mask = SKSpriteNode(color: .black, size: CGSize(width: skelet.frame.size.width/2, height: skelet.frame.size.height)) 

** установите положение маски на половину необходимого результата (вам нужно половину скелета -> установить положение маски на половину «половины скелета»)

 // Obj-C mask.position = CGPointMake(skelet.frame.size.width/4, 0); // Swift mask.position = CGPoint(x: skelet.frame.size.width/4, y: 0) 

Разделение на 4, потому что вы нуждаетесь в центре маски, чтобы быть не в центре Skelet узла, но перешли на половину половины Skelet (напоминания узла маски работает с точкой привязки по умолчанию 0,5 0,5 – поэтому нулевая точка соответствует центру узла скелета).

4) добавьте необходимые элементы в узел обрезки

 // Obj-C [cropNode addChild:skelet]; [cropNode setMaskNode:mask]; [self addChild:cropNode]; // Swift cropNode.addChild(skelet) cropNode.maskNode = mask self.addChild(cropNode) 
  • Как получить игровой центр Мультиплеерные данные в быстрой
  • Как изменить размер экрана на основе устройства в Sprite Kit?
  • приостановка игры spritekit с помощью appdelegate в ios8
  • Класс не реализует требуемые члены суперкласса
  • Как визуализировать множество узлов SpriteKit сразу?
  • iOS SpriteKit Как сделать цвет инсульта прозрачным?
  • Когда и как пакеты SpriteKit `sprite.atlas` сжаты / оптимизированы?
  • iOS8 Beta 3 SpriteKit exc_bad_acces при работе на устройстве
  • Использование аудиоклипа, вызывающего утечку памяти
  • iOS: реализация управляемой пользователем камеры «zoom» с помощью набора Sprite
  • Разрыв SKEmitterNode при приостановке / остановке
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.