Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
1-1100259968
Mishenka
2004-11-12 14:46
2004.11.28
Нужно вывести на форму рисунок из ImageList.


14-1100026168
Константинов
2004-11-09 21:49
2004.11.28
О ворованых мобильниках


4-1097669285
sw
2004-10-13 16:08
2004.11.28
сменить курсор у static a.


3-1099223103
Hyboid
2004-10-31 14:45
2004.11.28
Вставка в базу


14-1100246641
Gorlum
2004-11-12 11:04
2004.11.28
Что это за фигня с установщиком?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский