Я пытался создать очень простую систему редактора карт удара, которая имеет функциональную прокрутку с размещаемыми примечаниями и способна сериализовать данные примечаний карты ритма (просто нужны значения их позиции в виде единственного числа). Я пытаюсь завершить это в Roblox (Lua 5.1), но не возражаю против любой помощи, по крайней мере, о том, как сделать это правильно с помощью псевдокода или решения, которое не включает Roblox / Lua, если объяснено.
Ниже я скажу позиционное значение, то есть под этим я подразумеваю координату положения вверх или вниз, точно так же, как Y в 2D-векторе в этом случае. Я никогда не использую другую координату, поэтому я просто говорю позиционное значение.
Я помещаю заметки, я вычисляю позиционное значение 2D-объекта на 2D-объекте, который представляет собой дорожку, в которой находится мышь при щелчке, где, очевидно, находится объект. Затем, введя это значение в соответствующую таблицу дорожек (таблица, содержащая позиции каждой ноты в качестве индексов, соответствующих их 2D-объекту в качестве значений), добавляется числовое значение, которое я назвал currentOffset
. По умолчанию это значение равно 0 (для нижней части дорожки), и всякий раз, когда я прокручиваю вверх или вниз, значение -1
или 1
отправляется из события колеса мыши, которое я умножаю на то, насколько я хочу масштабировать прокрутка (например, 0.1
для маленьких прокруток). Я также проверяю таблицу на наличие повторяющихся значений положения при размещении заметки в попытке предотвратить дублирование заметок и использую функцию привязки при установке значения положения, показанного ниже:
local function snap(n, round)
return math.floor( n / round + 0.5 ) * round -- there is no math.round implemented so I have to use this manual approach
end
Идеально, когда я никогда не прокручиваю ( заметки размещаются аккуратно с положением мыши), но иногда или иногда я не могу размещать заметки в пустых местах, и я могу разместить их внутри заметки (создавая заметку внутри заметки). Дублированные заметки (заметка внутри заметки) будут прослушиваться, где они могут застрять без движения при прокрутке или при прокрутке, их положение резко меняется вниз.
Я не учел темп, так как я просто хотел это было решено до того, как я пошел дальше.
Если код и тестовый файл необходимы, у меня он доступен только по ссылке за пределами сайта , которая также содержит дополнительные сведения.
Я прибег к публикации на StackOverflow, а не на веб-сайте, на котором я разместил свой пост из-за отсутствия помощи через 2 недели, и я безуспешно обратился к нескольким людям, чтобы они помогли мне. Я также не смог найти много информации о ритм-играх.