Diskuze: Obrovský problém s Rotací.

Ostatní jazyky GameMaker GameMaker Obrovský problém s Rotací.

Avatar
martinov9
Člen
Avatar
martinov9:

Už nějakou dobu se snažím vyřešit jeden problém s rotací u spritů.
Jde vlastně o to že vedle sebe mám 3 čtverce o velikosti 32 pixelů na 32 pixelů a tyto čtverce rotují za myší.
A zde je ten problém jelikož se bloky otáčí každý naprosto jinak tak se při rotaci "nespojují" takže v nich vznikají mezery. Zkoušel jsem problém vyřešit sám nějakým dopočítáváním ale nevede se mi to neví někdo jak na to ?

 
Odpovědět 12.12.2015 19:44
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Nějak není jasné, co vlastně chceš, aby to dělalo. Když je otočíš směrem k myši, tak se logicky nemohou spojovat a když se mají spojovat, zas je nesmíš otáčet za myší. Pokud chceš, aby se volně umístěné čtverce otáčely bez mezer, musíš je otáčet jako skupinu.

Nahoru Odpovědět 13.12.2015 11:59
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

Už na to postupně přicházím a zprovoznil jsem zatím tohle : http://uloz.to/…5Y2/test-gmk
Jak se ale vyvarovat použití více objektů pro každý blok ?
Jak to tedy vše dát do jednohoho objektu který bude funguvat jako tyhle dva ale bude záležet na "x" a "y" ?
Prosim pomoc mi :( Už se tady s tim 3 hodiny morduju...
Jak si to myslel s tím otáčet jako skupinu ? Nejdřive jsem zkoušel je otáčet všechny stejně ale i tak se vytvářely mezery.

Ps: Koukni se na tu example co jsem poslal abys pochopil co chci vlastně udělat.

Editováno 13.12.2015 12:43
 
Nahoru Odpovědět 13.12.2015 12:41
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Takže chceš mít jeden objekt? Proč sis to teda rozdělil na tři?

Nahoru Odpovědět 13.12.2015 13:27
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

Jde o to že se pokouším vytvořit malý projekt kde mohu blok po bloku stavět např. Vesmírnou stanici či lod a k tomu právě potřebuju to aby se při rotaci spojovaly protože pokaždé si mohu udělat jiný tvar lodi.
Prostě chci naprogramovat editor lodi která se může pohybovat a rotovat proto to nemůže být jeden objekt s jedním spritem.

 
Nahoru Odpovědět 13.12.2015 14:09
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Hm. A rotovat potřebuješ během editace nebo až pak s celou lodí?

Nahoru Odpovědět 13.12.2015 14:15
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

Až po editaci nejprve lod postavíš a poté s ní můžeš volně pohybovat(roto­vat...)

 
Nahoru Odpovědět 13.12.2015 14:17
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

V tom případě bych nechal hráče naplácat kousky obrázku libovolně, výsledek bych uložil do sprite. Pak bych měl loď nebo stanici jako jeden sprite a ten celý rotoval.

Nahoru Odpovědět 13.12.2015 14:27
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
TomBen
Redaktor
Avatar
TomBen:

Jinak to ale v ukázce nemáš vůbec špatně. Jen bych stretchnul velikost sprite na 33x33. Tím by se nedělaly mezery. :-)

Nahoru Odpovědět 13.12.2015 14:29
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

Nějak sem nepobral co máš na mysli abych udělal protože mi to nijak nepomohlo :D
Potřebuju odpověd na otázku jak to udělat protože princip taky chápu :D
Potřebuju ukázku kodu díky kterému bych nemusel používat více objektů
Jak si to myslel s tím nechat hráče naplácat obrázky a pak to hodit do jednoho to nechápu :/

Editováno 13.12.2015 14:50
 
Nahoru Odpovědět 13.12.2015 14:50
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Ukázce budeš asi rozumět ještě méně, ale když už jsem ti věnoval ten čas, tak něco vyrobím. :-)

Nahoru Odpovědět 13.12.2015 15:17
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Ok, mám to:
https://www.dropbox.com/…ukceLodi.zip?dl=0

Čtverečky představují díly lodi. Nataháš je na konstrukční plochu.
Pak stiskneš SPACE a celá konstrukce bude rotovat za myší.
Takhle jsem to myslel a nic nepochopitelného na tom není.

Na drag&drop jsem použil svoje ikony, takže se ti nezobrazí. K danému tématu to ale nemá vztah.

Nahoru Odpovědět 13.12.2015 15:35
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
 
Nahoru Odpovědět 13.12.2015 15:50
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

A chápeš z té ukázky, jak jsem to udělal?

Nahoru Odpovědět 13.12.2015 16:02
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

Řekněme že ano něco z toho sem pochytil ale ne úplně všechno proto bych se ještě rád zeptal (Už mi to příde trapný :D) Jestli je nějaký způsob jak to udělat přes klasický objekty a lenghtdir ?
Pokud ano a měl bys ještě chut a kus svého drahoceného času ukázal by si mi jak na to přes objekty a lenghtdir ? :)

  • Předem už díky moc seš skvělej že pomáháš řešit problémy :D
 
Nahoru Odpovědět 13.12.2015 16:16
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Proč se škrábat pravou nohou za levým uchem?
Rotace složeného obrazu automaticky přepočítává pixely celku a tím celkový obraz zůstává konzistentní i po rotaci, zatímco jednotlivé objekty rotované samostatně ti budou vždycky dělat zuby na hranách a tím musíš řešit překrytí sám. Buď necháš podivné mezery nebo musíš softovat okraje a překrývat je. Matematicky ti funguje to, cos sám poslal.

Nahoru Odpovědět 13.12.2015 16:29
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

To co sem vymyslel já není skoro funkční šlo by to nějak zlepšit že ?
Jak ? :D
Já fakt nevim já nevim jak mám matikou dodělat víc bloků bez použití více objektů nebo jak vykrestli bloky i dole a ne jen po stranách nevim jak na to a nepřídu na to protože se o to pokoušim už 5 hodin A FURT MI TO NEJDE PROTOŽE TO K**** NEJDE !!!
Už mi z toho pomalu začíná hrabat ....
...
......
........
Pomoc ! :(
Jenom mi řekni jak Jak! ...
JAK DODĚLAT OSTATNÍ BLOKY PO STRANÁCH A JAK TO UDĚLAT BEZ POUŽITÍ SPOUSTY OBJEKTŮ ...
To je všechno co celou dobu chci
Jen "TOHLE"
Jen to vysvětlit jen to ukázat jen mi říct jak na to jít aby to šlo tim mim způsobem ...

 
Nahoru Odpovědět 13.12.2015 16:42
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinov9
TomBen:

Když z toho magoříš, tak je nejlíp si odpočinout a nechat to uležet. :-)

Na tom tvém kódu nic nefunkčního není a když se chceš zbavit objektů, tak tam nech jen objekt core a v jeho Draw eventu kresli sprite pro bloky. Stejným způsobem jak posunuješ objekty block a block2, můžeš posunovat střed sprite a všechno kreslit v tom objektu core. Už tam přece máš kód:

x = (lengthdir_x(32,global.smer))+obj_core.x
y = (lengthdir_y(32,global.smer))+obj_core.y

Tak jenom místo x si to spočítáš jako sx, sy. Pak vykreslíš sprite bloku do sx,sy.
Ostatní okolo jen posunuješ o 32 a měníš úhel.

Třeba nějak takhle:
https://www.dropbox.com/…tkyOkolo.zip?dl=0

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 13.12.2015 17:29
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
martinov9
Člen
Avatar
Odpovídá na TomBen
martinov9:

Díííky moc máš pravdu měl bych si už po 2 dnech jít lehnout a přestat se dopovat kafem :D
Jo od Pátku sem nespal :P
A dík moc za vyřešení problému :D
Seš nej ! :)

 
Nahoru Odpovědět  +1 13.12.2015 18:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.