Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
sacmoo
Založen: 18. 11. 2014 Příspěvky: 69
|
Zaslal: 5. březen 2017, 22:22:19 Předmět: Unity 2D - problem s fyzikou |
|
|
Mam klasicku platformer hru. Ked vyskocim a na pravo je stena a drzim sipku doprava,tak kym drzim sipku doprava postavicka nespadne. Ked pustim sipku, tak zacne na nu posobit fyzika a postavicka spadne na zem. Ako docielim toho, ze aj ked budem drzat sipku smerom do steny, tak aj tak postavicka spadne na zem a bude to posobit realnejsie? |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 6. březen 2017, 08:50:15 Předmět: |
|
|
Chápu jak to myslíš, ale popiš, jak tu fyziku počítáš (nebo čím).
Obecně to funguje takhle ("v realitě"):
1) Při výskoku získá postavička rychlost nějakým směrem X Y (řekněme, že Y je nahoru, X doprava). Ve fyz. enginech se na tohle používá nějaký impuls rychlosti (v Unity3D tuším ForceMode=Velocity?). Nikoliv síla. S tou silou by to taky šlo, ale musela by působit krátký okamžik (třeba jeden frame) a byla by velká - a to dělá jen bordel.
Funkce na výskok (změna rychlosti) se volá jen jednou při stisku klávesy, pak už ne.
2) Postavička letí. Ty musíš vědět, že letí a dokud nespadne, nemůže hráč znovu skočit.
3) Postavička narazí na stěnu. Kolizní systém vynuluje nebo částečně obrátí X složku rychlosti (dál přes stěnu se nepohybuje respektive se odrazí). Y zůstává, nebo se sníží lehce nějakým koeficientem tření.
4) Po celou dobu (od 1..až sem) působila na postavičku gravitace: tedy něco, co zvyšuje rychlost Y směrem dolů každým framem. Takže když postavička narazila na zeď, kolizní systém jí brání v pohybu doprava, gravitace stále snižuje rychlost Y a postavička letí k zemi.
Předpokládám, že nic nového ses nedozvěděl, je to totiž tak nějak stejný, jako když hodíš míčem o zeď :-). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 6. březen 2017, 08:55:33 Předmět: |
|
|
ad 3)
Nevím, jestli kolize počítáš sám. Jestli jo, může být chyba i tam. Jedna věc je kolizi detekovat, ale to je jen jeden ze tří úkonů, co se musí provést:
- detekce
- vyřešit penetrace (po kolizi nesmí objekty zůstat zabořené, takže se musí "ručně" vysunout ze sebe)
- reakce na kolizi (podle normály upravit vektory rychlostí kolidujících těles za použití parametrů fyz. materiálu: koef. odrazivosti, koef. tření) _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
Radis
Založen: 29. 03. 2014 Příspěvky: 235
|
Zaslal: 6. březen 2017, 09:32:50 Předmět: |
|
|
Proste bych na hrace dal dva collidery a nastavil je tak, aby mista, ktera se dotykaji zdi, mela nulovou frikci. Takto treba: http://ibb.co/dFYuaa |
|
Návrat nahoru |
|
|
sacmoo
Založen: 18. 11. 2014 Příspěvky: 69
|
Zaslal: 6. březen 2017, 12:17:37 Předmět: |
|
|
Radis napsal: |
Proste bych na hrace dal dva collidery a nastavil je tak, aby mista, ktera se dotykaji zdi, mela nulovou frikci. Takto treba: http://ibb.co/dFYuaa |
Diky to pomohlo uz to funguje. Ja som pouzil na ovladanie postavy scripty, ktore su v standaradnych assetoch(asset 2D). Ale nemam pocit, ze by sa to spravalo fyzikalne korektne. Teraz mam taky problem, ze ked je prekazka v takej vyske ze dokazem na nu vyskocit a ked nevyskocim uplne na nu ale iba na hranu a tym ze som tam dal nulove trenie na postavu, tak to ma taky efekt, ze ked sa postava preklzne na tu prekazku a drzim stale sipku doprava,tak cez nu preleti, ako keby som mal implementovany double jump. Neviem ci mi je rozumiet |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 6. březen 2017, 12:20:43 Předmět: |
|
|
...prasečinky vytváří další prasečinky. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
Radis
Založen: 29. 03. 2014 Příspěvky: 235
|
Zaslal: 6. březen 2017, 13:32:30 Předmět: |
|
|
sacmoo: No tak v OnCollisionEnter2D vynuluj y-ovou slozku rychlosti. A jeste ty collidery muzes predelat tak, ze pouzijes tri misto dvou, jeden normalni na postavu a dva na krajich (stejne vysoke, ale tenke a s nulovym trenim) a tim padem eliminujes ten schodek, ktery by ti taky mohl delat problemy - to ale zalezi na tom, jak ta tvoje hra vypada. Ono se takhle tezko radi jen na zaklade toho vagniho popisu |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 6. březen 2017, 13:37:01 Předmět: |
|
|
"...double jump. Neviem ... rozumiet" -- Tak třeba ten předudělaný skript byl takhle vymyšlen. Pokud mu nerozumíš, tak se podívej do jeho zdroje nebo dokumentace. |
|
Návrat nahoru |
|
|
sacmoo
Založen: 18. 11. 2014 Příspěvky: 69
|
Zaslal: 7. březen 2017, 11:02:50 Předmět: |
|
|
Ladis napsal: |
"...double jump. Neviem ... rozumiet" -- Tak třeba ten předudělaný skript byl takhle vymyšlen. Pokud mu nerozumíš, tak se podívej do jeho zdroje nebo dokumentace. |
Double jump tam nie je implementovany, problem je vo fyzike. |
|
Návrat nahoru |
|
|
|