Autor | Zpráva | ||
---|---|---|---|
final Profil |
#1 · Zasláno: 4. 3. 2013, 18:55:44
zdravím,
function drawA(){ for (var i = 0; i < height; i++) { for (var j = 0; j < width; j++) { context.drawImage(img, j*field, i*field); } }//pozadie } function drawB(){ context.drawImage(image, a.x, a.y);//postava } function update(){ //eventy na klávesnicu(šípka hore ,dole..) drawB();//aby sa postava posunula } setInterval(function() { update(); }, 1000/FPS); 2. ak by som drawA a drawB spojil tak postava sa tak divno zjavuje..(zjaví sa zmizne, zjaví sa zmizne) Ako to spojiť nejak dokopy aby mi to fungovalo spolu? (Aj pozadie,aj postava + hýbanie) ďakujem |
||
peta Profil |
final: Pouzit dva canvasy pres sebe? Pozadi a pruhledny s panackem.
Prekreslovani canvasu kazdych 10s neni moc in, to prohlizec asi neda, neni to 3d hra vykreslovana pres nabusenou grafickou kartu, ale pouhy javascript. |
||
1Pupik1989 Profil |
final:
Jak píše peta, canvasy měj dva. Jeden bude vlastně statický (pozadí) a druhý se bude animovat (panáček). Tipuju že to bude skákačka ala Mario. setInterval úplně vyhoď a změň za requestAnimationFrame případně dej do funcke drawB setTimeout, který bude volat znovu drawB , čímž vznikne smyčka. Čas je v pořádku. Tipuju, že FPS bude na 60, čili 16.6 ms na znovu zavolání funkce je v pořádku. Hlavně nezapomeň mazat plátno a pokud máš a.x a a.y typu float, tak zaokrouhlovat. Pokud to chceš ještě více zrychlit, tak můžeš zkusit off-screen metodu. Více koukni na HTML5 Rocks.
peta: I v internet exploreru je možnost zapnout GPU akceleraci. :) |
||
final Profil |
#4 · Zasláno: 5. 3. 2013, 15:00:20
1Pupik1989:
no malo by to byť skôr niečo na spôsob bombermana, a tým pádom nie som si istý či keby mám 2 canvasy(1 s blokami,2 s panáčikom) či by som dokázal napr. zistiť kolíziu(panáčik nemôže ísť cez stenu) |
||
peta Profil |
#5 · Zasláno: 5. 3. 2013, 15:13:47
Polohu objektu mas preci v js poli. Canvas zobrazi jen grafiku.
|
||
final Profil |
#6 · Zasláno: 5. 3. 2013, 15:34:10
njn, tiež pravda..a ešte k tým 2 canvasom aby som si bol istý či som dobre pochopil
<style> canvas { position: absolute; top: 50px; left: 50px; } </style> <canvas id="a"></canvas>//pozadie <canvas id="b"></canvas>//postava |
||
1Pupik1989 Profil |
Přesně tak. U hry typu bomberman není třeba řešit složitě kolize. Poloha panáčka + pohyb panáčka a zjistit jestli pole na které se chceš přesunout je volné nebo to je zeď. Máš třeba mapu:
var map = [ [1,1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,1], [1,0,0,1,1,1,0,0,0,1], [1,0,0,0,0,1,0,0,0,1], [1,0,0,1,1,1,0,0,0,1], [1,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1], ]; Když bude panáček na map[4][4], tak víš, že může jen doleva. Protože map[4][5] == 1; //je tam zeď map[5][4] == 1; //je tam zeď map[3][5] == 1; //je tam zeď map[4][3] == 0; //je tam volno //edit: K tomu pozicování: Ano, může být. Většinou ale radši používám nějaký obalový div. |
||
final Profil |
#8 · Zasláno: 5. 3. 2013, 16:48:19
1Pupik1989:
áno, tak tú mapu mám aj spravenú :) ďakujem za pomoc |
||
Časová prodleva: 4 dny
|
|||
final Profil |
budem pokračovať v tejto téme..
mám teda 2 canvasy: 1. na pozadie, 2. na postavu, ale ide o to, že tých postáv tam bude viac(chcem to skúsiť spraviť multiplayer) pri pohybe postavy vždy zmažem starú pozíciu postavy a nastavím novú plContext.clearRect(oldX, oldY, width, height); plContext.drawImage(person, x, y); napadlo ma len vždy pri pohybe nejakej postavy prekresliť potom všetky ostatné, ale to by prakticky nič nevyriešilo |
||
1Pupik1989 Profil |
#10 · Zasláno: 10. 3. 2013, 00:54:06
Pokud to bude na styl bombermana, tak bych to řešil stejně. Prostě vykreslit hráčovu postavu až na konec. U této hry asi nemá cenu řešit nic složitého, když je to pár obrázků co se vykreslí do plátna.
|
||
final Profil |
#11 · Zasláno: 10. 3. 2013, 08:24:36
ako na koniec? vykresliť vždy všetky postavy na novo? ale čo v prípade že 2 postavy by mali rovnakú pozíciu?
|
||
1Pupik1989 Profil |
#12 · Zasláno: 10. 3. 2013, 18:12:11
Má-li některá postava stejnou pozici jako hráčova, tak přeci není potřeba vykreslit. Pokud to tedy bude online multiplayer.
|
||
final Profil |
#13 · Zasláno: 10. 3. 2013, 19:05:47
áno online multiplayer, ale pokiaľ sa 2 postavy dostanú na rovnakú pozíciu (na 1 canvase) tak bude vidieť len 1 (tú 2., pretože tá prekreslí tú prvú)
|
||
1Pupik1989 Profil |
#14 · Zasláno: 10. 3. 2013, 20:13:03
Pokud jsou dvě postavy na jednom místě, tak vykreslím pouze svojí postavu.
if(jinaPostava.x !== mojePostava.x && jinaPostava.y !== mojePostava.y){ //vykreslím jinaPostava } |
||
Časová prodleva: 11 let
|
0