SKTextureAtlas переопределяется объявлением второго SKTextureAtlas - PullRequest
0 голосов
/ 26 июня 2018

Всякий раз, когда я создаю и определяю две переменные как тип SKTextureAtlas, они переписывают друг друга.Вот мое первоначальное создание двух моих SKTextureAtlas

class GameScene: SKScene {

    var idle = true

    var TextureAtlas = SKTextureAtlas()
    var TextureAtlasIdle = SKTextureAtlas()

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

    TextureAtlasIdle = SKTextureAtlas(named: "cat_idle")

    for i in 1...TextureAtlasIdle.textureNames.count{

        let Name = "\(i).png"
        TextureArrayIdle.append(SKTexture (imageNamed: Name))
    }

   TextureAtlas = SKTextureAtlas(named: "cat_walk")

Вот как яЗапустите мою анимацию cat_idle.Я не запускаю анимацию cat_walk

aN.run(SKAction.repeatForever(SKAction.animate(with:self.TextureArrayIdle, timePerFrame: 0.1)))

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

TextureAtlas = SKTextureAtlas(named: "cat_walk")

1 Ответ

0 голосов
/ 26 июня 2018

Атлас текстуры - это своего рода спрайт-лист для вашей игры.Ваш подход не подходит для доступа к изображениям атласа для игры.измените ваш для цикла , как показано ниже:

  for i in 0..< 8 {
        let texture:SKTexture = TextureAtlasIdle.textureNamed(String(format: "%i", i+1))
        TextureArrayIdle.insert(texture, at:i)
    }

Каждый раз, когда вы получаете доступ к своей папке атласа, используйте это для процедуры цикла.я использовал статический 8 номер для цикла, это будет количество ваших спрайтов.В github есть простая игра под названием Desert Run .пожалуйста, проверьте это для получения дополнительной информации.

Примечание: присвоение имен вашей кошке должно начинаться с 1.png , если вы хотите запустить для цикла

...