Hogyan animált spriteket készítsünk?

Tartsa az összes képkockát egy képen, majd olvassa el az eltolással. mod div segít.

De érdekes, hogy a stratégiai játékok minden fejlesztője animálta a játékkattintásos kártyát egy időzítővel, és átírja az egész kártyát n-másodperc alatt?

Például a Kirkop játékban egyszerre másoltam a teljes térképet, de csak a csempe esett a képernyő területére (mindent miért).
És csak olyan képernyőrészeket tudsz átcsomagolni, amelyeken jelenleg mobil spritek vannak (ez csak akkor, ha egyáltalán nincs sok a térképen).
És az időzítő alkalmazásának rovására, ezért szüksége van rá. Sőt, hardveres szinten támogatja.

Időzítő - nem, nem hiszem. Legalábbis GetTickCount.


> VolanD # xA0; (27.07.04 09:58) [4]

És ahogy gondolod. Csak a látható rész kerül újrarajzolásra. A fizika teljes.
Egyébként a háromdimenziós mozheli játékokat is animált ily módon - néhány előre betöltődik a memóriába hálózathoz, nem tévedés, hogy mennyi a hős felemelte a kezét vagy a lábát!

Tehát mit jelent a Minta jelentése a keretszám a ragasztott képen?

És hogyan kell felhívni a képet, mondjuk, a második sorban?

Ön is rendelkezik keretek száma soronként, a keret magasságát és szélességét. Ne felejtse el, hogyan tárolja az adatokat a memóriában, és megkapja a választ. Egy egyszerű képletre van szükségünk.
Bár a különböző szélességű keretek, akkor meg kell szórakozni.

[11] Most kezdtem dolgozni a DX-vel (mielőtt a pasquit primitívumot csináltam), szóval ha nem nehéz megmagyarázni nekem, hogyan kell csinálni.

PH, PW - az egyes keretek magassága és szélessége.

Sor - a sor száma vízszintesen (0 - legmagasabb)
Col-frame szám a sorban (0 - a bal szélső)

Rect.Top: = PH * Sor;
Rect.Left: = PW * Col;
Rect.Bottom = Rect.Top + PH;
Rect.Right: = Rect.Left + PW;

// Now Rect rámutat a megfelelő sprite-re

Néha azonban, hogy optimalizálja surfasy, akkor lehet, hogy a magassága minden sorban egy egyedülálló, mert egy tömböt hoz létre, amelyben a magasság és a kezdőcsapatban lesz tárolva minden sorban, és a szélessége a keret a sorozatban. Egy tömb méretű a sorok számával.
majd

írja be a tTable rekordot
# xA0; # xA0; # xA0; # xA0; Indítás: egész szám;
# xA0; # xA0; # xA0; # xA0; Wight, Magasság. byte / Byte, ha nem tervez több spritet, mint 255 * 255

var Táblázat: tTable array [0..n] # xA0; # xA0;

Rect.Top: = táblázat [sor] .tart;
Rect.Left: = táblázat [sor] .Wight * Col;
Rect.Bottom: = Rect.Top + Táblázat [Sor] .Hight;
Rect.Right: = Rect.Left + Táblázat [Sor] .Wight;

Olvassa el, hogyan tárolja a tárolást a memóriában. Talán már kiderült, de azt mondom: lineáris. Ie soronként. Tehát ha a bitkép 100 képpont hosszúságú, akkor 101-nél a második sorban 1 pixel lesz. Stb

Állj. DX alatt vagy, mi a DelphiX vagy valami? Aztán hiányzott egy kicsit, vannak olyan dolgok, amiket nem tudsz zavarni, bár még mindig tudnod kell. A DelphiX-ben nem vagyok asszisztens.

A DelhiX Sprite-ben a bitmap általában csak egy sorban kerül tárolásra, így semmi bonyolult.

Nagyon köszönöm. Már szervezett.
Sőt, semmi bonyolult. Egy képen csak két sorban tartottam a karakterem animációját:
1-ben a hős balra, 2-re jobbra. Köszönjük ismét.

Kapcsolódó cikkek