Diskuze: Tower defence-otáčení věže za cílem
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
![Avatar](images/img/person.png)
Člen
![Avatar](images/img/person.png)
Zobrazeno 50 zpráv z 66.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
image_angle=point_direction(self.x,self.y,mouse_x,mouse_y)
tohle je příkaz na otáčení za myší (volá se každý step ve scriptu) a jen to uprav na otáčení za co to potřeuješ
Dal jsem to tam ale když jsem vyměnil mouse_x a mouse_y za tu potvoru po kom má střílet tak je otočená jen jedním směrem a nehejbe se. Asi nwm jak si to myslel.
avoláš ten script každej krok/step znovu? si si jistý že "otáčíš" za správnou instancí potvory? (resp, když tam necháš myš funguje ti to?)
Nic s myší to přece nemá společnýho. Je to tower defense hra takže každá ta věž by se měla otočit na toho, na koho střílí.
On ti napsal možnost, jak to otestovat. Použij místo zaměření příšery myš a pokud to bude fungovat, pak bude zřejmě problém s příšerou (respektive s hledáním pozice příšery).
Tak jsem opravdu nevědel jak to mysel . Jinak když tam nechám myš
tak to funguje. Tím pádem asi nwm jak mám udělat aby se zaměřili na toho
na koho střílí.
Když přece víš kam střílet, musí ti být jasné, kam otáčet.
Potřebuješ prostě identifikovat instanci
( např. pomocí instance_nearest ).
Mně je jasné kam otáčet ale nwm jak to tý věži mám vysvětlit.
Třeba takhle:
direction=point_direction(x,y,(object1).x,(object1).y);
draw_sprite_ext(sprite_index,image_index,x,y,1,1,direction,c_white,1);
Napsal jsem tam přesně tohle akorát místo object1 jsem dal toho příšeráka a ta věž furt střílí ale neotáčí se.
Sry že tu jsem za takovýho vola ale já se timhle zabejval x hodin,prohledával jsem tutorialy a zkoušej.Jsem z toho úplně vygumovanej a vynervovanej protože nwm proč to nejde.
To co jsem psal funguje. Můžeš kouknout:
http://uloz.to/…/otaceni-zip
Takže prostě hledej, cos napsal blbě.
Nebude problém v tom že já mám víc příšerek jednoho typu?
A navíc když jsem ten kód vložil do té hry, tak mi to vypsalo chybu dokud jsem nesmáznul to ".x" a ".y" a pak když jsem to zapnul tak to stejně nešlo.
Ježkovy voči. Error nemůžeš řešit tak, že prostě něco smažeš.
Error ti pomáhá najít chybu.
A samozřejmě, že při více instancích nemůžeš psát objekt jménem.
Takže ten kód co jsi mi poslal je mi k ničemu?
Koukám, žes ty tutoriály vzal pěkně hákem..
Když naklikáš do roomu stejný objekt několikrát, tak těm jeho
výskytům
se říká instance. Každá z nich má své číslo - id.
Toto číslo můžeš vidět v room editoru a některé funkce ti toto
číslo vrátí a umožňují ho použít.
( např. funkce instance_nearest, create_instance, atd. )
edit: Jinak doporučuji dělat pokusy na prázdném GM.
Když to vždycky namatláš do hry, nebudeš vědět, co nejede a proč.
Já ty tutoriály nebral hákem. Mám dokonce stáhnutý 3 tower enginy a prostě nwm kterej kód nakazuje věžím to aby se na svůj cíl otáčeli. Já jen chci aby mi s tim někdo poradil neboť v tom nejsem dobrej.
Chtěl jsem tím říct, že na to jdeš z opačné strany.
Hledat konkrétní řešení, když nerozumíš základům je špatná
volba.
Můžeš mít staženo i padesát cizích kódů. U programování
potřebuješ
znát elementární postupy a pak z nich skládáš program. Když je
neznáš, zbytečně se snažíš dělat hru. Informací, které ti cizí
kód
poskytne, je mizivé množství a hra, kterou takto vytvoříš není
vlastně
vůbec tvoje práce a u příští hry na tom budeš stejně špatně.
Hledej tutoriály na programování obecně, ne na konkrétní hry.
Vždiť já furt hledám nějaký tutoriály ale prostě když to nikde
nemůžu najít tak se spolehnu na to že to opíšu, podívám se na to a pak
zjistim v čem to je.
Ale pokud ten kód neuvidim tak jak mám asi přijít na to jak se to dělá?!
Vždit když jsem vytvářel tu svojí hru tak jsem se tky něco dozvěděl
neboť jsem předtim vytvářel jenom skákačku. Když teda nefunguje ani
opisování. Myslel jsem že mi teda pomůže když se zeptám tady. Ale to asi
tky ne.
Ptát se můžeš, ale když se zeptáš, jak se programuje Tower
Defense,
je to zářný příklad špatné otázky. Ptej se jak fungují objekty,
ptej se na dědičnost, na fungování událostí, atd.
Co kdyby jsi si nechal poradita použil nejbližší instanci, podle toho co píšeš asi nemáš dost znalostí na použití složitější metody
aa = instance_nearest(x,y, enemy);
image_angle = point_direction(x,y,aa.x,aa.y);
// shoot direction = point_direction(x,y,aa.x,aa.y);
Řekl bych, že on to zas dá Cut&Paste někam doprostřed
toho guláše, co odněkud nakopíroval z jiných webů.
Bude mít i s dobrým kódem šanci jen okolo 50%, že mu to
pojede. Navíc už to tu měl několikrát a zjevně se ani
jednou nechytl. Doporučil bych začít s něčím snazším,
ale bez cizích kódů. Jen vlastní hlavou.
1.Když tam napíšu tamten kód tak mi to vypíšu chybu kterou se měl i u
těch ostatních
2.Něco snadnějšího jsem už zkoušel a pak jsem si řek že bych mohl zkusit
něco těžšího a když jsem na tower defense viděl tolik tutoriálu tak jsem
si myslel že by to nemuselo bejt zas tak těžší.
3.Jak můžeš říct že to je patlanina když si to ani neviděl. Prostě jsem
vzal z jedný tower defence hry část z druhého TD část a když jsem se
díval na jiný tutoriály tak to jako patlanina vypadalo spíš u nich.
Vím, že to je patlanina, z toho cos sám napsal.
Když vezmeš půlku jedné patlaniny a přidáš půlku druhé patlaniny,
získáš patlaninu ještě vyššího stupně než ty dvě první.
Kdybys to měl alespoň vlastní, tak bych ti napsal, ať to sem dáš
a opravil bych ti to. Ale nemám moc chuť opravovat chyby v něčem,
co ani není tvoje.
jo hlavně že jednu "patlaninu" máte tady na stránce.
Říkals že věže střílí dobře ... tudíž bys mohl připsat kód na otáčení ke střelbě ...
Tzn. jakmile věž začne střílet, také se otočí na cíl ...
Ale jak to říct té věži když mám víc jednotek stejnýho typu a mám tam object kterej vytváří ty příšerky.
Ten object který je vytváří s tím nemá nic společného, je neutrální, nemá životy a nedá se po něm střílet, tak proč na něj chceš mířit?
Já to sem píšu kvůli tomu protože TomBen mi řekl kód který funguje jen když prostě vezmu tu příšerku a vložím jí do hry. Ale já tam mám spawner který ty příšerky vytváří a já nwm jak mám té věžce přikázat aby se obrátila na tu příšerku na kterou útočí a ne na někoho jinýho.
To už je složitější, když to nedokážeš vymyslet použij nearest, když nedokážeš použít ani nearest, nedělej TD hru
Co kdybys tomu dal trochu čas a popřemýšlel nad tím.
Řešení už tady bylo víckrát, jen ho musíš pochopit.
Když se budeš opravdu snažit, tak to dáš.
ok ale já nwm jak se mám zbavit tohohle erroru:
if point_distance(x,y,target.x,target.y)>dosah
^
at position 31: Unknown variable x
Zkus
if (point_distance(self.x, self.y, target.x, target.y) > dosah)
self je zbytečný, svoje x to zná, nezná to target.x
Zásek je na znaku 31.
Vidíš, mohl jsem si to přepočítat, vypadá to na copypasta, kdyby věděl na co to má směřovat, tak tam přece nedá object který nemá ve hře
Dokážu vyřešit tvůj problém, ne sice způsobem který se ti bude líbit, ale řešení je jednoduché: začni s tutoriály na GM. Vytvořil jsi mutantní hru ze složení pár kousků dalších co jsi našel, takhle ti to nepůjde podle představ. Potřebuješ vědět co jaký příkaz dělá, když to nevíš tak ti je copypasta k ničemu.
A na jaký GM návody se mám podle tebe podívat?
Asi nejlepší je to v češtině, takže http://www.itnetwork.cz/…aky-priklady
A co z toho si mám vybrat?
Doporučil bych ti nejlépe základy GML, postupně zjišťovat co který příkaz dělá, když to tu nenajdeš tak použít google
Když začneš mým seriálem TBA, tak chybu neuděláš.
Pak je dobré naučit se hledat v normálním Helpu,
který je psaný dobře, stručně a přímo tvůrcem.
Nějaké úvodní články o objektovém programování
taky neuškodí, protože ty principy se ti budou hodit.
Dobré jsou taky přehledy ekvivalentů ikon v kódu gml.
Nechtěl by si mi spíš poslat odkazy? Abych nehledal v nějakých blbostech neboť já nepoznám jestli to je dobře nebo ne, ale ty víš co je napsaný správně a co ne.
Nevím o ničem, co by bylo napsané vysloveně špatně.
Pokud je něco zastaralé, tak to zjistíš podle data,
kdy byl článek zveřejněn. Jinak to v odkazu, který
poslal Theodor Johnson můžeš brát klidně shora dolů.
Všechno co tam je, bys měl znát.
Akorát občas je někde rozdíl ve studiu, ale pokud používáš 8.0 tak by mělo jít všechno (myslím že i 8.1)
Zobrazeno 50 zpráv z 66.