Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

Анимация в играх   Найти похожие ветки 

 
Werwolf   (2004-07-04 15:06) [0]

Как сделать анимированного персонажа чтобы он при движении на карте не оставлял после себя полосу анимации.Т.е. у меня есть карта и при движении в какую-либо точку на карте герой оставляет шлейф подскажите как с этим разобраться. Я использую компоненты delphix. Киньте кусок кода. ПЛИЗ


 
Servelat ©   (2004-07-04 15:23) [1]

Очищать экран (или, точнее Back Buffer) перед рисованием героя и всего остального.


 
Landgraph ©   (2004-07-04 18:13) [2]

А еще лучше - очищать прямоугольную область, размеры которой равны размерам объекта - быстрее работать будет.

С куском кода помочь не могу - я с delphix не работал =)


 
Werwolf   (2004-07-04 19:26) [3]


> Очищать экран (или, точнее Back Buffer) перед рисованием
> героя и всего остального.

А как енто. Если у меня карта загружается с файла и герой который топчется по ней оставляет следы. Очищать экран не логично. И че ета за процедура back buffer и где она применяется


 
Servelat ©   (2004-07-04 22:48) [4]

Back buffer - задний буфер, это не процедура, почитай книжки про ПрямойИкс. Смысл: все, что ты рисуешь, рисуется в задний буфер, который на экране не виден, а когда ты делаешь DXDraw.Flip, то этот буфер становится видимым на экране. Тебе надо: очистить этот буфер (для этого пишешь DXDraw.Surface.Fill(0), вот этот Surface в DelphiX"е и является задним буфером), далее нарисовать карту (или ту её часть, которая видна на экране), далее нарисовать героя, и, наконец, сделать DXDraw.Flip, этим самым отобразив на экране все нарисованное ранее.


 
Werwolf   (2004-07-04 23:44) [5]

А куском кода не поможешь


 
Micke   (2004-07-05 00:29) [6]

В событии DXTimerTimer должны быть:
DXDraw.Surface.Fill(0);
DXDraw.Flip;


 
Micke   (2004-07-05 00:31) [7]

Если не понятно вот примерно что должно быть:

procedure TMainForm.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw.CanDraw then exit;
SpriteEngine.Move(LagCount);
SpriteEngine.Dead;
Input.Update;
DXDraw.Surface.Fill(0);

тут делаем что хотим

SpriteEngine.Draw;
 

DXDraw.Surface.Canvas.Release;
DXDraw.Flip;
end;


 
ПсихЪ_клон   (2004-07-05 09:28) [8]


> Werwolf   (04.07.04 23:44) [5]

Ты чё, маленький? Кусок кода ему подавай. Сервелат в 4"ом посте тебе всё по полочкам разложил, а тебе всё мало. Может за тебя всю игру написать? Повторяю то, что сказал Сервелат:
0. Инициализируешь DirectX (DelphiX делает это автоматически при старте приложения).
1. Загружаешь всё, что тебе необходимо (графику, карту, персов).
2. Очищиаешь дополнительныю поверхность (backbuffer).
3. Рисуешь карту, рисуешь персов.
4. Меняешь primarybuffer и backbuffer местами (процедура Flip()).
5. возвращаешься к пункту 2.

ГЫ: Камень в огород оболочечников: вот что бывает с теми, кто начинает изучение игрового (мультимедийного) программирования с изучения оболочек, не имея никакого представления о том, на чём основана их работа.


 
Darthman ©   (2004-07-05 10:31) [9]

ПсихЪ_клон:
ДА ладно тебе.. я тоже с делфиикс начинал, вопросов только глупых у меня не возникало практически. Достаточно детально рассмотреть примеры идущие в комплекте и все становится ясно. Хотя делфиикс дрянь порядочная.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
1-1098201922
GanibalLector
2004-10-19 20:05
2004.11.07
Pchar


1-1098041341
Jetus
2004-10-17 23:29
2004.11.07
Как сохранить иконку?


3-1097339186
Cobalt
2004-10-09 20:26
2004.11.07
Различие всяких технологий


1-1098655862
saNat
2004-10-25 02:11
2004.11.07
Глюки TMemo


1-1098689926
Mishenka
2004-10-25 11:38
2004.11.07
PopupMenu в ComboBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский