Drujdova insomnie aneb háštak nosleep háštak gejmejkr – Déšť
Jedna japonská legenda praví, že když nemůžete usnout, jste právě v něčím snu. A protože jsem se po mrtě moc letech zase rozhodl něco málo napsat na krevetu. Je to kopírka z blogu, ale ne každý z vás na můj blog chodíte a tak to prskám i sem.
Na blogísku jsem si založil novou rubriku pojmenovanou Insomnie.
No, a jak by napsala každá třináctiletá blogerka jako jsem já : „A co v rubrice najdete?“
No, prostě věci co jsem udělal když jsem nespal. Někdy půjde o obrázek, písničku, text a někdy kousek kódu. (Což je tenhle případ.)
Takže… Co že jsem to udělal?
TOHLE (otevře se to v novém okně, tak se nebojte, neopustíte tento skvělý článek) Kolečkem krysy nastavujete intenzitu lijavce.
Tak… A teď k tomu jak jsem to udělal… Musím se totiž pochlubit tím, že je to řešeno nejdebilnějším možným způsobem na jaký jsem spolu s internetem přišel.
Používám tři objekty:
1. obj_rain_generator
2. obj_rain
3. obj_splash
Někteří z vás již jistě tuší proč je to tak strašně blbě. Ale pro ty, kterým je to jedno, sepíšu tutorial.
První – obj_rain generator.
Tam mám ve step eventu toto :
///rain generate
edge = 10;
repeat(intensity) {
instance_create(view_xview-edge+random(view_wview+edge*2),
view_yview-edge+random(view_hview+edge*2),
obj_rain) }
edge určuje jak daleko za view se má déšť vytvářet a místo intensity si dejte jakékoliv číslo. (silně doporučuji 20 a méně 😀 )
Další je obj_rain.
Ten je…. Složitější.
Create event
///set_height
height=20
Step event
height-=1
if height<=0{
instance_change(obj_splash,false)
}
A … draw event
//nastavení barviček a ták
draw_set_color(choose(c_ltgray,c_dkgray,c_white));
draw_set_alpha(0.5);
var length; //length of drop
var vectorx, vectory; //distance from middle of screen
//kalkuluj vektory
vectorx = (x-(view_xview+view_wview/2))/(view_wview/2);
vectory = (y-(view_yview+view_hview/2))/(view_hview/2);
length = 1;//length of rain drop
//nakresli chcanek
draw_line_width(x+vectorx*sqr(height) ,y+vectory*sqr(height),
x+vectorx*sqr(height+length),y+vectory*sqr(height+length),2);
//resetuj nastavení kreslení
draw_set_alpha(1);
draw_set_color(c_white);
A jako poslední… obj_splash
A v sobě event animation end a v něm ikonku destroy self.
Pokud čekáte vysvětlení kódu, čekáte marně, je to kopírka z netu a tomu vykreslování deště prostě nerozumím. Takže si to zkopírujte a užijte :D. I tak doufám, že se to někomu z vás hodí.
6 odezev
Je to pěkný a v určitých situacích užitečný. 🙂 Díky za kód. 😀
Za isto vďačná vec, kódu je pomerne málo ale treba narábať ako s ohňom pretože som pretočil s kolečkom 🙂 a instancie mi pobili všetky fps.
Vypadá to moc hezky. Nicméně ani všechny nejnovější i7 mi slabým fps při kolečkování nezabránily. 😀
Na takovéhle věci je super surové OpenGL, s tím to můžeš napsat v Jave a stále to bude plynulejší, než GM! ^^
Jak jsem psal, je to řešený tím nejdebilnějším možným způsobem 😀 Prostě to místo pouhýho drawu to na každou kapku udělá novou instanci 😀
Fajne, úplně mi to připoměno jednu stařičkou freewarovku – horrorová Top down hra, kde se běhá po opuštěném městečku a občas na vás vyběhne nějaký vlk. Ehm. Fiend, myslím: odkaz ale nemá to s článkem nic společného. 😀
A ještě mi to zase připomnělo, že bych se konečně měl naučit dělat ty blend efekty…
Na blend mody se určitě mrkni! Neni to nic zas až tak složitýho, ale rozdíl ve vzhledu hry je přitom docela znatelnej. Dostane to tu správnou atmosféru!