Swift 3 — функция для создания n спрайтов со случайными координатами x/y

Я пытаюсь создать несколько SKSpriteNodes, каждый из которых имеет свои независимые переменные, которые я могу изменить/модифицировать. Я хотел бы иметь возможность запускать функцию при запуске приложения, например, "createSprites(5)", которая создаст 5 спрайтов с изображением/текстурой "shape.png" со случайными координатами x и y и добавит все 5 спрайтов в массив, к которому я могу получить доступ и изменить позиционирование различных спрайтов на основе значения индекса. Затем я хотел бы иметь другую функцию "addSprite()", которая каждый раз, когда она вызывается, создает новый спрайт с той же текстурой "shape.png", размещает его в другой случайной координате X и Y, а также добавляет его в массив всех спрайтов, чтобы, опять же, иметь доступ позже и изменить координаты и т. д.

Я просматривал так много других страниц переполнения стека и не могу найти решение. Моим идеальным решением были бы просто две функции, о которых я говорил ранее. Одна для создания "n" количества спрайтов и другая функция для создания и добавления еще одного спрайта в массив каждый раз, когда он вызывается.

Надеюсь, это имеет смысл, я новичок в Swift и во всем этом Sprite, поэтому простые информативные ответы будут очень признательны.


person Terminal    schedule 31.12.2016    source источник
comment
Ну, сломай. Вы хотите сделать одно задание и повторить его несколько раз. Простой цикл for покрывает последнее. Теперь, как бы вы сделали это один раз?   -  person Alexander    schedule 31.12.2016
comment
@Terminal Добро пожаловать в SO. Наша работа не в том, чтобы писать код за вас. Я предлагаю вам попробовать, и даже если вы не продвинетесь очень далеко, опубликуйте, что вы сделали. Тогда мы сможем помочь вам лучше. Никто не собирается просто набросать весь этот проект за вас.   -  person Benjamin Lowry    schedule 31.12.2016


Ответы (1)


Вы не найдете идеального решения из прошлого, потому что ни у кого, вероятно, не было одинаковых желаний как со Swift, так и со SpriteKit. Сказав это, вероятно, есть частичные ответы, которые вы можете смешать вместе и получить желаемый результат или, по крайней мере, понимание того, как это сделать.

Позиционирование спрайтов в SK, вероятно, первое, о чем стоит прочитать:

https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Sprites/Sprites.html

разобравшись с этим, вы можете перемещаться в случайные позиции.

Случайное расположение спрайтов:

Дублировать спрайт в случайных позициях с помощью SpriteKit

Случайные позиции Sprite Kit

Оба используют более ранние версии рандомизации, которые не так эффективны, как те, что доступны сейчас в GameplayKit. Итак... Генерация случайных чисел в Swift с помощью GameplayKit: https://www.hackingwithswift.com/read/35/overview

Трудно переоценить важность понимания различных возможностей влияния различных типов рандомизации на игровой дизайн, поэтому, вероятно, будет разумно прочитать это от Apple:

https://developer.apple.com/library/content/documentation/General/Conceptual/GameplayKit_Guide/RandomSources.html

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

person Confused    schedule 31.12.2016