Diskuze: Expolze
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 23 zpráv z 23.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Napadl mě tento způsob, není zrovna nejsofistikovanější, ale funguje
if(distance_to_object(nepritel) < 100)
health = -10;
else if(distance_to_object(nepritel) > 110 &&
distance_to_object(nepritel) < 120)
health = -20;
else if(distance_to_object(nepritel) > 120)
health = -30;
Nejspíš stačí obyčejná lineární funkce (neznám přesnou syntaxi gamemakeru, tak to možná nebude správně zapsané):
damage = damageMax-distance;
damageMax tady je zároveň maximální dosah exploze a každý pixel dál je damage o 1 bod menší.
A musíš si ještě ohlídat, aby nebyl hráč od exploze dál, než je
dosah exploze, pak by ti vyšlo damage záporné .
Trochu jsem to vylepšil GloBByteCZ :
zivot -= clamp(damageMax - point_distance(x, y, vybuch.x, vybuch.y), 0, damageMax);
EDIT: Pokud bys to nevěděl, tak ta funkce clamp ti ošetří ty záporné hodnoty.
Jenže mě to na ten clamp hází error Mám snad vytvořit nijakou proměnnou?
___________________________________________
FATAL ERROR in
action number 5
of Create Event
for object obj_player:
COMPILATION ERROR in code action
Error in code at line 4:
hp -= clamp(damageMax - point_distance(x, y, obj_explosion.x, obj_explosion.y),
0, damageMax);
^
at position 8: Unknown function or script: clamp
Je možné, že tu funkci přidali až v tom studiu. Takže bude asi nejlepší vytvořit si script s názvem clamp, napsal bych ho asi takhle:
if(argument0 > argument1){
if(argument0 < argument2)
return argument0;
else
return argument2;
}else
return argument1;
a jak a kam ho mám vložit?
s argumentama jsem zatím skoro nic nedělal
Dej prostě "přidat script", nahoře vyplň jméno clamp a vlož do něj tenhle kód. Pat můžeš to clamp v kódu používat.
A ten kod přijde do stepu, creatu výbuchu nebo hráče (ani jedno
nefunguje)? a jsi si jistý tím demageMax? Mě se to nijak nezdá
DamageMax je "poloměr: exploze. Místo toho názvu tam ten poloměr napíšeš (např. Pokud má výbuch dosah 128 pixelů, damageMax = 128). Kód dáš do create eventu exploze a trochu ho upravíš:
hrac.hp -= clamp(damageMax - point_distance(hrac.x, hrac.y, x, y), 0, damageMax);
Jestli myslíš ten kód skriptu, nedávej ho do žádného objektu, ale nahoře v menu klikni na Resources a potom na New Script a vlož ten kód tam. Do jména skriptu nahoře napiš "clamp"
Omlouvám se, že to pořád nechápu ale ani takhle to nefunguje-
obj_player.health -= clamp(damageMax = 75 - point_distance(obj_player.x, obj_player.y, obj_explosion.x, obj_explosion.y), 0, damageMax=75);
Tohle je blbost.
obj_player.hp -= clamp(75 - point_distance(obj_player.x, obj_player.y, x, y), 0, 75);
Tohle už by mělo fungovat.
obj_player.Health -= clamp(damageMax - point_distance(obj_player.x, obj_player.y, obj_explosion.x, obj_explosion.y), 0, damageMax);
Potom si teprve do Create eventu napiš:
damageMax = 75;
Udělej to takhle:
https://www.dropbox.com/…ceDamage.zip
Tak jsem sem z nostalgie kouknul a je to tu furt stejné.
Zobrazeno 23 zpráv z 23.