Форум: "Игры";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизКак делать анимированные спрайты? Найти похожие ветки
← →
RyDmi © (2004-07-26 21:50) [0]Я имею ввиду без всяких там TSpriteEngine и пр.?
← →
kiki (2004-07-26 22:03) [1]RTFM NOOBISH
← →
RyDmi © (2004-07-27 00:40) [2]1 Не понял вас?!!
← →
Evgeniy_K (2004-07-27 05:43) [3]Храни все кадры на одной картинки, а потом считывай со смещение. mod & div тебе помогут...
← →
VolanD (2004-07-27 09:58) [4]А вот интересно, неужели все разработчики стратегических игр анимируют игровую- клечатую карту с помощью таймера и перерисовки всей карты через n-секунд?
← →
Megabyte-CeerCop © (2004-07-27 12:53) [5]В игре Киркоп я например на перерысовывал всю карту сразу, а только тайлы, попадающие в область экрана (всю то зачем).
А ещё можно перерисовывать только те части экрана, на которых в данный момент есть подвижные спрайты (это только если их вообще на карте не так много).
А на счет применения Тимера, так он для того и нужен, чтобы его юзать. Тем более, что он имеет поддержку на аппаратном уровне.
← →
Белый Крыс © (2004-07-27 12:59) [6]Таймер - нет, не думаю. Как минимум, GetTickCount.
← →
NikeOLD (2004-07-27 15:41) [7]
> VolanD (27.07.04 09:58) [4]
А ты как думаешь. Перерисовывается только видимая часть. Физика - полностью.
Кстати в трехмерных играх можели тоже анимируются подобным образом - с помощью нескольких заранее загруженных в память сеток, а никак не просчетом на сколько герой поднял руку или ногу!
← →
RyDmi © (2004-07-28 00:24) [8]Так значет Pattern это номер кадра на склееной картинке?
← →
lyeh © (2004-07-28 05:13) [9]2 RyDmi ©
> Так значет Pattern это номер кадра на склееной картинке?
Да :) Его хватит, если тайлы на картинке расположены в один ряд
← →
RyDmi © (2004-07-28 19:40) [10]А как отрисовать картинку, скажем, во втором ряду?
← →
NikeOLD (2004-07-28 19:59) [11]У тебя же есть количество кадров в строке, высота и ширина кадра. Вспомни, как располагаются данные в памяти и получишь ответ. Нужна одна протейшая формула.
Хотя если кадры различной ширины тогда придется возиться.
← →
RyDmi © (2004-07-29 00:54) [12][11] Я только начал работать с DX (до этого только на паське примитив делал), так что если не сложно объясни мне ламерку как это сделать.
← →
Megabyte-CeerCop © (2004-07-29 06:24) [13]Смотри:
PH,PW - высота и ширина каждого кадра.
Row - номер ряда по горизонтали (0 - самый верхний)
Col - номер кадра в ряду (0 - самый левый)
Rect.Top := PH * Row;
Rect.Left := PW * Col;
Rect.Bottom := Rect.Top + PH;
Rect.Right:= Rect.Left + PW;
//теперь Rect указывает на нужный тебе спрайт
Однако иногда, для оптимизации сурфасы, можно сделать высоту каждого ряда уникальной, для этого создай массив, в котором будет храниться высота и начальная линия каждого ряда, и ширина кадра в ряду. Массив размером по количеству рядов.
Тогда
type tTable record
Start :integer;
Wight,Height : byte //Байт, если не планируеш спрайты больше чем 255*255
var Table :array [0..n] of tTable
Rect.Top := Table[Row].Start;
Rect.Left := Table[Row].Wight * Col;
Rect.Bottom := Rect.Top + Table[Row].Height;
Rect.Right:= Rect.Left + Table[Row].Wight;
Думаю разберешься
← →
NikeOLD (2004-07-29 10:17) [14]
> RyDmi © (29.07.04 00:54) [12]
Не успел :)
Читай, как организовано хранение битмапов в памяти. Может уже и выяснил это, но я скажу: линейно. Т.е. ряд за рядом. Поэтому если твой битмап в длину имеет 100 пикселей, то обратившись к 101 ты получишь 1 пиксель во втором ряду. И т.д.
Стоп.... Ты под DX,что имешь ввиду DelphiX что ли? Тогда я малость промахнулся, там на такие вещи можно и не заморачиваться, хотя знать все равно надо. В DelphiX я не помощник.
← →
Megabyte-CeerCop © (2004-07-29 13:06) [15]В DelhiX Спрайты в Битмапе хранятся вообще только в одном ряду, поэтому ничего сложного.
← →
RyDmi © (2004-07-29 17:46) [16]Всем Большое спасибо. Уже организовал.
Действительно, ничего сложного. Просто я хранил анимацию своего персоонажа на одной картинке в 2 ряда:
в 1 герой идёт влево, во 2 - вправо. Ещё раз спасибо.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.202 c