| 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: 13 let
|
|||
0