Тема: Танчики
Показать сообщение отдельно
Старый 11.03.2008, 21:04   #243
Новичок
 
Аватар для L'ombre
 
Регистрация: 07.03.2006
Адрес: !here();
Сообщений: 38
Репутация: 26 [+/-]
Цитата:
Сообщение от razor21 Посмотреть сообщение
Свойство ID у CellItem'a означает тип ячейки, я так понял? То есть, можно будет иметь ввиду типа "трава", "асфальт" и т.д.
совершенно верно

Цитата:
Сообщение от razor21 Посмотреть сообщение
И еще: в ядре ведь подразумевается плавная езда танком?
нет. как раз в ядре не подразумевается.
я про это говорил тут - http://forum.igromania.ru/showthread...07#post3205007 - в результате был выбран второй вариант. То есть каждый танк может переместиться не более чем на одну ячейку за такт, а разная скорость создаётся засчёт задержек. Поэтому в ядре у траверсеров нет свойства "скорость", поэтому же координаты у всех объектов целочисленные, да и вообще идея дискретности пронизывает весь код ядра.

Вот визуализатор будет рисовать танки плавно. Раз уж возник такой вопрос, расскажу об этом подробнее.
Скрытый текст:

вот есть танк. он может стоять или двигаться, то есть у него два мозможных состояния. Чтобы заставить его двигаться, нужно вызвать метод OrderMove() - для танка это приказ "сдвинуться вперёд на одну клетку". Если ничего ему не мешает, то он начинает двигаться. У него есть задержка, которая определяет его скорость - грубо говоря, это количество игровых тактов, которые танк потратит на движение. Все такты между началом движения и окончанием движения танк, с точки зрения ядра, стоит на месте. при этом он "резервирует" ячейки, которые он займёт после движения, чтобы другие танки не могли начать двигаться туда же; при этом ядро само обрабатывает всякие столкновения летящих снарядов с этими ячейками. Так вот, танк находится в этом состояни несколько тактов, и каждый такт может занимать несколько единиц реального времени, и в это время его нужно отрисовывать на экране. так вот, отрисовывать его нужно плавно. "Картинка", представляющая танк, может находиться между ячейками (а сам танк - не может). Чтобы определить, где именно рисовать эту картинку, нужно сравнить текущее значение таймера танка (метод Timer() ) с его максимально возможным значением (метод ActualDelay() ). чем ближе это значение к нулю, тем ближе нужно рисовать танк к конечной точке движения.

всё это, кстати, относится и к снарядам; за исключением того, что снаряды движутся всегда, им не нужно приказывать двигаться

p.s. razor21, почитайте повнимательнее ранние посты этой темы. да, там много хлама, но хотя бы мои и pokibor'а сообщения почитайте - там уже есть ответы на многие вопросы

p.p.s. насчёт текстур. художники! - договоритесь с razor21'ом насчёт формата этих самых текстур - тип файла, размеры и тд, чтобы не получилось такого, что каждый делает текстуры своего размера. А пока текстуры не готовы, можно, и правда, сделать несколько цветных квадратиков в paint'е, чтобы отсутствие текстур не мешало процессу разработки.
__________________
Use the Darkness that you have inside

Последний раз редактировалось L'ombre; 12.03.2008 в 01:06.
L'ombre вне форума