Как создать узел SpriteKit с изменением текстуры?

#swift #sprite-kit #swift5 #gamekit

#swift #sprite-kit #swift5 #gamekit

Вопрос:

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

Я борюсь с битами текстуры. Я настроил рандомизатор и для него вызываю текстуру. Но, установив его на узел, я не уверен

Вот код, который у меня есть на данный момент

 func createBag() {
    let randomBagSelect = Int.random(in: 0..<4)
    
    if var bagNode = self.bagNode {
    
        if randomBagSelect == 0 {
            bagNode = (SKTexture(imageNamed: "Suitcase 1"))
        }
        
        if randomBagSelect == 1 {
            bagNode = (SKTexture(imageNamed: "Suitcase 2"))
        }
        
        if randomBagSelect == 2 {
            bagNode = (SKTexture(imageNamed: "Suitcase 3"))
        }
        
        if randomBagSelect == 3 {
            bagNode = (SKTexture(imageNamed: "Suitcase 4"))
        }
    }
}
 

Комментарии:

1. Разве это не просто вопрос наличия SKSpriteNode объекта в качестве переменной?

2. Ему не нравится, когда я пытаюсь установить для него значение SKSpriteNode, как в операторах if, которые я устанавливаю как SKTexure

Ответ №1:

Если bagNode является объектом SKSpriteNode, то настройка его текстуры выполняется следующим образом:

 bagNode.texture = (SKTexture(imageNamed: "Suitcase 1"))
 

Комментарии:

1. Кажется, я не могу этого сделать. Я добавил .texture в bagNode (он установлен как SKSpriteNode в файле sks), и я получаю сообщение об ошибке «Значение типа ‘SKTexture’ для элемента sno ‘texture’ »

2. Таким образом, bagNode в настоящее время является текстурой, а не SKSpriteNode. Чтобы файл GameScene ссылался на ваш sks-файл, у вас обычно есть что-то вроде этого. В верхней части вашего файла введите bagNode: SKSpriteNode?, а в разделе didMove bagNode = дочерний узел (с именем: «bagnode») как? SKSpriteNode. withName — это то, что вы назвали в своем sks-файле.