Я делаю приложение, которое рисует непрерывные линии, как змея, используя Unity и SKSpriteKit (Obj-C) в Xcode (я делаю 2 версии одного и того же приложения в обоих):
http://i.stack.imgur.com/qA1zk.png
http://i.stack.imgur.com/484kj.png
http://i.stack.imgur.com/QTEkC.png (Извинения за посты с изображениями. Я не могу опубликовать изображение/более 2 ссылок)
Если вы когда-нибудь слышали об игре под названием Curve Fever, то то, что я здесь делаю, очень похоже на нее. Я управляю направлением конца линии с помощью клавиш со стрелками, в то время как конец линии автоматически перемещается вперед в каждом кадре, создавая изображение, подобное приведенному выше.
Однако из 3 скриншотов выше совершенно очевидно, что моя программа не очень эффективна - каждый кадр я добавляю спрайт круга в SKScene в том месте, где мой движущийся спрайт, из-за чего через некоторое время появляется на экране более 1000 узлов, а потребление энергии/памяти/процессора очень велико… Не идеально.
Так что теперь я ищу лучшие способы рисования линии на экране без рисования тысяч узлов.
Некоторое время назад мой друг рассказал мне о том, как он сделал похожее приложение в GameMaker (я не знаю, как им пользоваться). Когда я спросил его, как он визуализировал линию, он сказал, что создал что-то, называемое «поверхностью», и когда что-то движется по этой поверхности, старое положение спрайта все еще остается там — что создает линии, если круг перемещается по поверхности. поверхность.
Он довольно расплывчато говорил об этом, и позже я попытался провести некоторые исследования, но безуспешно. Я не смог найти ничего подходящего о непрерывных линиях, поверхностях и GameMaker, Xcode или Unity.
Если бы кто-то мог предложить решение, о котором говорил мой друг, для Xcode/Unity - желательно для обоих (или если бы кто-нибудь мог сказать мне, о чем он говорил для GameMaker), то я был бы признателен, так как это оптимизировало бы мой игра и уменьшить серьезные лаги, которые я получаю примерно через 30 секунд.
Кроме того, я был бы признателен, если бы кто-нибудь мог предложить альтернативные решения и для этого.