|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2002
Сообщений: 47
|
Повторение движений объектами за другим объектом
Вопрос имеет к ActionScript 3 косвенное отношение, но все же.
Делаю игру типа классической змейки. Змейка может двигаться в любом направлении на плоскости, при этом тело змейки повторяет в точности путь, пройденный головой (первым звеном). Допустим, что змеек штук 5. Рационально ли будет тупо запоминать координаты первого звена в каждый момент и времени и потом вести остальные звенья по этим координатам?. Ведь это получится 5 достаточно больших массивов, растущих ежесекундно (а на самом деле вообще каждые 30 милисекунд). Выдержит ли проигрыватель Flash, если код написан на ActionScript 3? Может есть хороший алгоритм? Need optimization |
|
|||||
Регистрация: Feb 2009
Сообщений: 1,195
|
В классической змейке массив координат, растущий при увеличении длины змейки. Зачем вам нужен рост массива каждые 30 мсек? Это ведь 33 добавленных звена в секунду, а за минуту под 2000 звеньев.
|
|
|||||
Регистрация: Mar 2002
Сообщений: 47
|
В игре каждые 30 мсек. срабатывает функция, перемещающая змейку (первое звено) в нужно направлении, т.е. каждые 30 милисекунд меняется координата. Так змейка движется плавно, без рывков.
Т.е. у меня не совсем уж классическая змейка по квадратикам. =) |
|
|||||
Регистрация: Feb 2009
Сообщений: 1,195
|
Изменение координат и рост массива - это разные вещи. Массив должен увеличиваться только при добавлении звеньев. В случае плавного движения размер массива будет количество звеньев * задержка в кадрах между первым и вторым звеньями (расстояние между звеньями будет зависеть от скорости первого звена и от этой задержки).
|
|
|||||
можно запоминать координаты каждого звена змейки в массив. Получиться один массив из обьектов Point(x,y). Незнаю как с производительностью, но работать будет. Каждые 30мс мы пробегаемся по массиву, 0 элемент (1 звено) становиться новым Point, т.к. мы сдвинулись. 1 становиться 2 и так далее....последний удаляется. Вместе с массивом добавим переменную maxLenght - сколько звеньев в змейке может быть максимальным. Соотвественно при взятии бонуса maxLenght растёт.
|
|
|||||
Modus ponens
|
Почему 5 и почему массивов? Я с ходу один вектор насчитал...
Можно, конечно, сделать и не фиксированой длины, а наращивать по мере прибавления элементов.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Mar 2002
Сообщений: 47
|
VVall
"Массив должен увеличиваться только при добавлении звеньев." Да, я это понимаю и это совершенно верная мысль. Так не будет он все равно достаточно большим? wvxvw 5, это для каждой из змеек, их несколько - 5 штук для примера. Вектор. Хм. Ну схема та же фактически. Всем спасибо за размышления, все очень верно. Суть осталась та же. Буду по точкам ориентироваться. =) |
|
|||||
Регистрация: Jul 2009
Сообщений: 35
|
В голову лезет извращение:
Создать структуру( массив переменной длинны), в котором каждый элемент это код направления 1-4 и количество узлов змейки в этом направлении. Соответственно змейка строится относительно головы. |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
А зачем дополнительные массивы? У вас же все уже запомнено, все звенья змейки стоят на своих местах. перед смещением головы надо передвинуть каждое звено на позицию перед ним стоящего звена.
|
Часовой пояс GMT +4, время: 17:54. |
|
« Предыдущая тема | Следующая тема » |
|
|