useknutí stínu při přiblížení

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět
BboyScary
Příspěvky: 221
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice

useknutí stínu při přiblížení

Příspěvek od BboyScary » květen 26, 2016, 6:17 pm

Zdravím vás. Zkusil by jste mi prosím někdo poradit? Mám ve své hře udělané stíny pomocí tohoto kódu:

Kód: Vybrat vše

usek = argument0; //Část obrázku, která se má vynechat
zacatek = argument1; // začátek stínu na ose y
draw_sprite_part_ext(sprite_index, -1, 0, 0, sprite_width, sprite_height - usek, x - sprite_width / 2, y + zacatek, image_xscale, -image_yscale, c_black, 0.5);
draw_self();
U každého objektu mám ve stepu:

Kód: Vybrat vše

depth = y*-1;
takže to vypadá jsako 3D. Když se ale postavím např za strom, jako je to na obrázku, tak můj stín přesahuje přes stín toho stromu a ve finále to vypadá, jako by ten můj stín podlezl strom. Dalo by se to nějak useknout když se tak blízko přiblížím?
Obrázek

Goblin
Příspěvky: 134
Registrován: červenec 2, 2014, 2:42 pm

Re: useknutí stínu při přiblížení

Příspěvek od Goblin » květen 26, 2016, 7:37 pm

Jediné, co mě takhle spatra napadá je, že by ty stíny mohly všechny stín vrhající objekty vykreslovat černě do surface během end stepu (oShadowCasting by mohl být parentem všech stín vrhajících actorů a mít pro ten účel zřízený event). Pak by ten surface s určitou průsvitností vykreslil nějaký zastřešující objekt (oShadow) s vysokou hloubkou a až pak by se objekty normálně vykreslovaly v Drawu.
"Understanding is not required. Only obedience."

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: useknutí stínu při přiblížení

Příspěvek od hráč » květen 27, 2016, 2:09 am

Stačí to vykreslit do surface co sem zkoušel pro test tak alespoň v GM 8.1 se to chová tak že ty vykreslované obrázky podle všechno spojuje :shock:
2016-05-27.png
Takže to řeší tvůj problém prostě to vykresluj do surface a mělo by to jít pokud to není v GMS jinak x3 což předpokládám že používáš :D

ale řeší to jen to že se to nebude jakoby překrývat...
kdyby si chtěl aby se to ořezávalo musel bys na to jít trochu složitě protože v tom kořenu třeba by ten stín jít měl vidět.. ale za kmenem ne... kdyby to mělo být 100% doporučuji si udělat editor objektů a tam všude namapovat výšku a podle toho pak vykreslovat ale to je trochu složité... jak sem psal tohle by mělo stačit aby to aspoň vypadalo dobře :bounce:
Neposedný liškovlk!
Obrázek

BboyScary
Příspěvky: 221
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice

Re: useknutí stínu při přiblížení

Příspěvek od BboyScary » květen 27, 2016, 7:55 am

Děkuji za rady. Používám Game maker studio. Ale se surfacy jsem se ještě nenaučil i přes mnoho snah o pokus :D ale je to dobrý nápad udělat to tak aby se jen překryly se stejnou průhledností.

chain
Příspěvky: 93
Registrován: leden 2, 2013, 3:41 pm
Facebook: http://facebook.com/

Re: useknutí stínu při přiblížení

Příspěvek od chain » květen 27, 2016, 8:05 am

jj tien sice doda scene 3D priestor ale ak iba otocis (odzrkadlis) tien podla horizontalnej osi tak to nie je uplne ono. Skrat vysku spritu pri tieni na polovicu, mierne ho skos (posun na jednu stranu) a bude to vyzerat lepsie a tebe to problem vyriesi.. (Opticky ti to lepsie zvyrazni rovinu na ktorej je objekt polozeny).

napr.:
Obrázek

Goblin
Příspěvky: 134
Registrován: červenec 2, 2014, 2:42 pm

Re: useknutí stínu při přiblížení

Příspěvek od Goblin » květen 27, 2016, 11:46 am

chain: Máš pravdu, že to vypadá líp, ale nevím, jestli by to tak opticky fungovalo i u grafického řešení OP. Kromě toho chtěl vyřešit aby nebyly stíny ve stínech a ty tam pořád máš (tam kde se stíny stromů překrývají, je stín tmavší -pokud máš jeden zdroj světla, tak to nedává moc smysl), jen to kvůli menším stínům tak nebije do očí. Ale napadlo mě, že by se ten systém dal krásně použít na pseudo 3D simulaci denního cyklu... :D
"Understanding is not required. Only obedience."

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: useknutí stínu při přiblížení

Příspěvek od D-Sheep » květen 28, 2016, 6:12 pm

Kluci, tak jste mě namotivovali nápady a obrázky, že jsem prostě musel vytvořit demo.
Směr a délka stínů se ovládá šipkama, intenzita +/-
Stíny se kreslí do surfacu jako texturované polygony a ten se vykresluje s jednotnou průhledností do roomu.
Doufám, že se vám to bude aspoň líbit, když už je to tak složitý na pochopení a implementaci :3

https://dl.dropboxusercontent.com/u/241 ... hadows.gmz

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: useknutí stínu při přiblížení

Příspěvek od hráč » květen 28, 2016, 9:09 pm

Až na ten konec dobrý :D

Kód: Vybrat vše

############################################################################################
FATAL ERROR in
action number 1
of Other Event: Room End
for object o_shadow_controller:

ds_list_destroy argument 1 incorrect type (5) expecting a Number (YYGI32)
 at gml_Object_o_shadow_controller_EndRoomEvent_1 (line 4) -     ds_list_destroy(ds_map_find_value(global.shadow_textures, k));
############################################################################################
Jako základ to určitě stačí prostě bez surface se u dobré hry neobejdeš x'D
Neposedný liškovlk!
Obrázek

BboyScary
Příspěvky: 221
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice

Re: useknutí stínu při přiblížení

Příspěvek od BboyScary » květen 28, 2016, 11:03 pm

to vypadá pěkně. Ale mohl bys mi prosím vysvětlit jak se dělá to natočení? ta funkce ,,skew" Hledal jsem na google i v GMS nápovědě a moc jsem toho nenašel. Jen v editoru kde se dělají sprites.

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: useknutí stínu při přiblížení

Příspěvek od D-Sheep » květen 29, 2016, 1:14 am

Pardon, omlouvám se, že v tom uvolňování byla chyba, vlastně jsem to ani netestoval a dělal v kódu zbytečný kraviny. Soubor v odkazu jsem opravil a už to běhá bez problémů.
==================================
Co se týká té "skew" funkce, to je úplně custom dělaná věc a game maker ji ze základu neumí. Je to vlastně vyřešený natáhnutím textury přes zkosený polygon. Je to práce s grafickými primitivy, která se taky rozhodně k tvoření dobrých her hodí.
Pokud by někoho zajímalo, jak s nimi pracovat, může se podívat na dávný tutorial, který jsem kdysi napsal: http://www.forum.velkejchytrak.cz/viewt ... =16&t=2329

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti