.[ ČeskéHry.cz ].
Neřešitelné úlohy v unity 3D
Jdi na stránku 1, 2, 3 ... 11, 12, 13  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Popelnice
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 25. březen 2014, 15:58:26    Předmět: Neřešitelné úlohy v unity 3D Odpovědět s citátem

Jedno dne jsem si řekl, že budu moderní a začnu používat Unity. Hlavně kvůli práci, protože se dá sehnat dost zakázek, kde je to podmínkou. Už ho používám přes rok. Občas to jde, ale často se taky chytám za hlavu a říkám si "PROČ PROČ!!!!????". Pak se kouknu na unity fórum a zjistím, že na můj dotaz neexistuje odpověď. A to třeba v několika vláknech. Ani dokumentace nepomůže - je sice hezky zpracovaná, ale nezjistíte, co ta či ona funkce vlastně dělá. Někdy nezjistíte ani jednotky, nebo koordinační systém.

Tak po krátké diskuzi v tomto vlákně s podporou několika místních uživatelů, zakládám vlákno, které nemá být cílený hating, ale protiváha dnešního glorifikování tohoto enginu. Nebo také souhrn zkušeností negativnějšího typu z cca ročního používání Free i PRO verze (těch pozitivních zkušeností je plný internet :) ). Jo a neberte to tak moc vážně, je to popelnicové téma! :-)


Nuže:
Taková pěkná neřešitelná úloha v Unity3D je: "Zjištění kolize objektu s ostatními objekty".
Ano, je to divné, ale je to tak. Jsou situace, kdy potřebujete (třeba v herní logice) zjistit, jestli nějaký objekt nekoliduje s jiným. Třeba při respawnu, nebo při volbě vhodné animace charactera, atd. Stačilo by něco jako "Unity.Collision.Check(object)". Ale nic podobného nenajdete. Nabízí se SweepTest. Ten je ale tak nějak k ničemu, protože nefunguje. Asi parameter distance má být nenulový? Nevím, dokumentace mlčí. Nabízí se také Physics.CheckSphere a Physics.CheckCapsule. Proč ale proboha definuju na objektech ty collidery, když stejně skončím u koule? Je to škoda.
Jsem docela zvědav na vaše zkušnosti.

Možná mi něco uniká, dostanu odpověď jedním odkazem a stanu se tak na pár dní kašpárkem ceskych-her :-) . Ale jdu do toho :-).
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 25. březen 2014, 16:18:33    Předmět: Odpovědět s citátem

A nestacilo by si pri kazdej kolizii poznamenat, ze nastala a ked skonci, tak to zo zoznamu odmazat? Ja som s tym robil len par dni a nie velmi intenzivne, ale co si tak pamatam, tak rozumne callbacky sa mi volali pri zaciatku kolizie (Collider.OnCollisionEnter) aj "opusteni" kolizie (OnCollisionExit).
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
McMagic



Založen: 06. 08. 2012
Příspěvky: 615

PříspěvekZaslal: 25. březen 2014, 16:22:53    Předmět: Odpovědět s citátem

A jde o objekty co mají rigidbody nebo jen o čisté collidery?

Trigger na mesh collideru ti to nevyřeší?

Já ho používám na AI atd. kdy collider jako trigger reaguje na okolní objekty dle potřeby a vzdálenosti.

Možná píšu úplně z cesty;) Pracuji s Unity chvilku...
_________________


http://www.mcmagic-productions.com/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Adam.Streck



Založen: 19. 08. 2011
Příspěvky: 26

PříspěvekZaslal: 25. březen 2014, 16:23:24    Předmět: Odpovědět s citátem

Myslim ze explicitni dotazovani funkce skutecne neni, ale callback OnCollisionStay by mohl pomoct.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 25. březen 2014, 16:28:26    Předmět: Odpovědět s citátem

OnCollisionStay se volá každý frame. Já chci ale odpověď hned, ne čekat další frejm, pak ho posunout kousek vedle a zase čekat. Ano. Mohl bych to dělat s neviditelným objektem a pak teprv udělat třeba ten respawn. Ale to je nepěkný workaround.
OnCollisionEnter jsem zkoušel, něco to dělalo, ale tuším, že taky se zpožděním. Udělám další pokus.

McMagic: jo, všechno jsou to triggery.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 25. březen 2014, 16:39:00    Předmět: Odpovědět s citátem

Pokus: jak říkám, OnCollisionEnter (respektive OnTriggerEnter) se nezavolá hned. Až po čase. Někdy až po dvou framech.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
DespeRadoX



Založen: 28. 07. 2007
Příspěvky: 520

PříspěvekZaslal: 25. březen 2014, 21:08:21    Předmět: Odpovědět s citátem

oncollisionenter sa vola castejsie ak si v timemanageri nastavis fixed timestep a maximum allowed na nizsie cisla (podla potreby)...my sme to s memom riesili ked nam v Deathmetal gulicka koli velkej rychlosti neskolidovala so stenou (proste dalsi frame uz bola na druhej strane)
_________________
http://www.touchgames.eu/
http://playito.com
TW: @Despo100
Space Merchants Online ...zruseny, pracujem na mobilnej verzii space merchantu
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 26. březen 2014, 20:48:51    Předmět: Re: Neřešitelné úlohy v unity 3D Odpovědět s citátem

]semo[ napsal:
zakládám vlákno, které nemá být cílený hating, ale protiváha dnešního glorifikování tohoto enginu

A on někdo Unity snad glorifikuje tady na CH? Nebo se s tím setkáváš běžně někde jinde? U normálních vývojářů jsem nic takového nezaznamenal (ti řeší na fórech pragmaticky bugy, kterých je stále požehnaně) a výkřiky typu "nedělám v unity, protože ho každý chválí" apod. beru jen jako nesmyslný kolorit...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. březen 2014, 08:28:26    Předmět: Re: Neřešitelné úlohy v unity 3D Odpovědět s citátem

No, setkávám. Mám kolegu, který se nad tim tak moc rozplývá, že byste nevěřili. A přitom takovej chytrej a úspěšnej vývojář. A jeden můj zadavatel to stejný. Jsou s tim jak prdlí. No a tady se taky občas někdo najde, ale nebudu jmenovat, stejně je to fuk:-).
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 27. březen 2014, 10:41:19    Předmět: Odpovědět s citátem

Jj, je to fuk, takže tu několikrát píšeš, jak děláš protipól, a že to není snaha o hejt, a smajlík sem a smajlík tam. Buď to řeknu na férovku a ukážu prstem, nebo neříkám, že to je fuk, no ni? Wink. Já právě na CH zatím viděl jen odsudky toho, že si někdo vůbec dovolí s Unity špinit ruce, když je u toho takový hype. A chudáci pragmatici, aby šli kopat kanály nebo nevím Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 27. březen 2014, 12:21:17    Předmět: Odpovědět s citátem

Aby sme sa vratili k teme, funguje ti to uz, Semo, podla toho, co napisal Rado?

Podla mna hate nie je na mieste. Tento engine tu je, da sa na nieco pouzit, na nieco ine zase nie a nech sa s tym kazdy vysporiada ako vie, forum je od toho, aby sme si prave v takychto pripadoch skusili pomoct, nie? Smile
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. březen 2014, 13:26:55    Předmět: Odpovědět s citátem

pcmaster napsal:
Aby sme sa vratili k teme, funguje ti to uz, Semo, podla toho, co Rado?

Ne, to neni řešení. Je tam opět čekání na příští, nebo jiný frame. Tohle nemá v unity řešení, tak ho ani nehledám. Smajlík sem, smajlík tam...
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 27. březen 2014, 14:07:40    Předmět: Odpovědět s citátem

]semo[ napsal:
Ne, to neni řešení. Je tam opět čekání na příští, nebo jiný frame. Tohle nemá v unity řešení, tak ho ani nehledám. Smajlík sem, smajlík tam...

A to se bavíš opravdu o fyzikálním frame a ne vykreslovacím? Jak sis ten krok nastavil? (Nejde mi do hlavy, že bys nedostal kolizi hned v následujícím framu)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. březen 2014, 14:36:14    Předmět: Odpovědět s citátem

Chápej, nechci to v dalším frame. Ani fyzikálním, ani grafickým. Chci prostě funkci, která to checkne a vrátí mi výsledek bez čekání.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 27. březen 2014, 16:38:16    Předmět: Odpovědět s citátem

Třeba je tak Unity stavěný, že počítá fyziku jako celek najednou. Vem si, že spousta méně zkušených skriptařů je schopna napsat:
kód:
if (objekt1->kolize(objekt2)) { ... }
...
if (objekt1->kolize(objekt2)) { ... }
...

Namísto:
kód:
bool jeKolize = objekt1->kolize(objekt2);
if (jeKolize) { ... }
...
if (jeKolize) { ... }
...

Takhle vynutili, že to pojede maximálně efektivně - za cenu omezení pro zkušené programátory, co vědí, co dělaji.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Popelnice Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3 ... 11, 12, 13  Další
Strana 1 z 13

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna