#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-файле.