Autor Zpráva
Agerion
Profil *
Dobrý den,

potřeboval bych několik rad ohledně vytvoření objektu, vypočítání jeho směru pohybu a při kolizi s nepřítelem jeho smazání. Nechal jsem se inspirovat touhle hrou. Takže:

1) Pohyb mé lodi je v pořádku. Problém nastává při vytváření objektů (nepřátel a střel). Skript pro nepřátele:
var positionx = Math.floor(Math.random() * (1+200-10)) + 10; // Vypočítá pozici objektu
var enemyClip = new enemy();
enemyClip.x = positionx;
enemyClip.y = 0;
addChild(enemyClip);

Stejné to je u střel, pouze jiná jména proměnných a třídy střely. Obrázky to normálně dělá, ale když mám již na scéně více objektů stejného druhu, většinu objektů již nemůžu volat jako enemyClip, tak zavolám pouze poslední vytvořený. Neví někdo, jak volat i ty ostatní ?
2) Dále nevím, jak vypočítat směr letu střely (tak, jak to je v té hře výše)
3) Nikde jsem nenašel ActionScriptovou funkci, která by poslala objekt nějakou stálou rychlostí k nějakému x,y a aby po dosažení této pozice letěl trvale stejnou rychlostí dál
4) Nevím, jak smazat objekty (nepřátele a střely) při kolizi se sebou. Používám funkci hitTestObject(). Když pak mám script:
setInterval(checkCollisionProjectile, 40);
function checkCollisionProjectile(){
if(enemyClip.hitTestObject(projectileClip)){
explosionClip = new explosion();
explosionClip.x = enemyClip.x;
explosionClip.y = enemyClip.y;
addChild(explosionClip);
removeChild(enemyClip);
removeChild(projectileClip);
}
}

tak to háže chybu, jako kdybych to smazával 400 milisekund. Dám-li místo removeChild(enemyClip); funkci, která posune enemyClip na frame2, kde je stop(); a nic na obrazovce, funguje to. Podle mě však to, že každý "smazaný" objekt vlastně zůstává na scéně bude zpomalovat animaci. Neví někdo, jak to udělat jinak, aby se objekt doopravdy smazal ?

Děkuji za všechny rady.
Agerion
Maras
Profil
Nepřátele ukládej do pole.
Střely ukládej do druhého pole.

Při kolizi zkontroluj všechny střely se všemi nepřáteli.

Uděláš to tak, že vytvoříš for cyklus, který poběží pro každého nepřítele a v tom cyklu bude další cyklus, který poběží pro každou střelu.

Tuto funkci můžeš spouštět při každém snímku.

Rychlost hrdinů nastav tak, aby : rychlost v ose x + rychlost v ose y = požadovaná rychlost nepřátel

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0