Znáte to, máte hru, ve které běhá panáček, všude jsou různé překážky, ale s hráčem nijak nereagují. Nebylo by lepší, kdyby je hráč mohl posunovat? V tomto článku si ukážeme jednu z mnoha metod jak na to.
Budeme potřebovat nějakou postavičku a krabici. Postavičce uděláme klasické ovládání do čtyř světových stran, s rychlostí např. 3, ale navíc se při zmáčknutí příslušné klávesy uloží proměnná „global.d“ na hodnotu daného směru.
„do prava“ = 0
„nahoru“ = 90
„do leva“ = 180
„dolů“ = 270
Krabice bude solid (pozn. To nám zajistí, že do ní postavička „nevjede“) a v eventu create, bude nastavovat „friction“ na hodnotu 0.1, což nám zajistí, že bedna po získání rychlosti zpomalí. Druhým a zároveň posledním eventem bude kolize s postavičkou. Ta bude obsahovat jen ikonku „move free“, v jejíž direction bude obsahovat výše vytvořenou globální proměnnou. A speed o něco vyšší než rychlost figurky např. 3.5.
Můžeme vytvořit „room“ a šoupat krabici sem a tam... ale... když se setkají dvě krabice, tak se do sebe „zarazí“, to jde však jednoduše opravit přidáním kolize s krabicí, ve které nastastavíme rychlost na nulu, a to pomocí tohoto řádku:
Dále si můžeme vytvořit objekt „zeď“, která bude mít zaškrnuto „solid“. Stím, že v krabici vytvoříme další kolizi, přesně podle té poslední a to samé nezapomeneme udělat i u postavičky, protože jinak by nám mohla procházet zdmi.
V případě, že chcete postavičku ovládat do všech směrů, jednoduše zrušte nastavení "global.d" v klávesách, a do step dejte:
Stejně tak můžete takto krabice posunovat v plošinovce, ale samozřejmě tam budete muset zapojit gravitaci.
Určitě jsou daleko lepší možnosti, jak podobnou věc vyřešit, ale tahle je jednoduchá, snadná a funguje. ;)
Malá ukázka: Zde
Komentáře
Přidat nový
Pro přispívání musíte být přihlášen
Zapsal Firejs - 14.11.2010 21:05
Však proč, ne.. píšu že je to jeden z mnoha způsobů.. doslova:"Určitě jsou daleko lepší možnosti..."
Zapsal xem - 14.11.2010 00:16
Ja nechcem nejak rípať ale nestačilo by do kolízie bedne s hráčom dať
hspeed=object0.hspeed
vspeed=object0.vspeed
ja som to skúšal a funguje to lepšie nemusíš sa hrať s direkciou a vytvárať zbytočné premenné ;)
Zapsal xem - 29.09.2010 19:06
Myslím Že adamso robil ten tut a z toho som sa naučil proste že
obj_bedna:
speed=obj_player.speed a potom treba nadstaviť pohyb hráča cez speed niekedy to síce môže byť nevíhodné ale je to presnejšie :)) ale inak tut sa mi páčil.
Zapsal Firejs - 29.09.2010 12:08
Jo však píšu že jsou lepší možnosti jak to udělat... tato je jednoduchá a snadná... nevhodná pro přesnost, neboť když do kostky tlačíš zboku, ale jdeš nahoru - posunuje se nahoru, ale např. v topdown akci na posunování židlí, stolů, různých trosek... dostačuje.
Můžeš popsat tvůj princip "jednoducho cez speed"? Nějak nevím jak to myslíš.
Zapsal xem - 29.09.2010 07:12
tak mne to dosť bugovalo ale prečo to jednoducho nerobiť cez speed???
Zapsal mimamo - 15.09.2010 18:20
Pohyb, gravitace, kolize, střílení, pohyb za hráčem, jednoduchý tut na hru viděnou z boku, jednoduchý tut na topdown.
Jen střílím od boku, jestli to je blbost, včas mě zastavte.
Zapsal Firejs - 13.09.2010 21:00
No, asi to není na škodu, a dokonce se to i snadno a rychle píše (todle mi trvalo jen půl roku :D), jen to chce ty náměty, protože na spousty základních věcí už něco napsáno bylo.
Zapsal mimamo - 12.09.2010 19:43
Pěkné. Určitě bych uvítal více podobně směřovaných návodů - tj. základní věcí v game makeru. :)
Zapsal moddo - 08.09.2010 20:25
Moc pekne :) Ted jsem tohle delal v BlitzMaxu :)



