náhodná pozice při startu hry

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Post Reply
Whale
Posts: 2
Joined: December 31, 2019, 11:11 pm
Facebook: http://facebook.com/

náhodná pozice při startu hry

Post by Whale »

Ahoj, vím že tady jsou samé chytré hlavičky.
Dělám hru podobnou klasice Vs. battle city ( viz. příloha) a nevím si rady s náhodnou pozicí hráče při startu hry ( nebo po zabití).
Udělal jsem v obrázku tečky náhodného objevení při startu. Pro lepší pochopení.
Zkoušel jsem instance_create(random(room_width),random(room_height),obj_tank1), ale problém je ten, že se hráč občas objeví ve zdi a potom se nemůže pohybovat.
Chtěl bych vás poprosit o kód příp. radu. Víc než random create ze sebe nevymáčknu. Jsem začátečník. :D
maxresdefault.jpg
User avatar
ipq
Posts: 929
Joined: August 15, 2011, 7:31 pm
Location: Petržalka

Re: náhodná pozice při startu hry

Post by ipq »

Klasický random ti nepomôže, pretože to bude dávať len náhodnú hodnotu hocijakú, čo znamená, že to skončí aj u steny. Pokiaľ chceš aby to tak neskončilo, treba to ošetriť ako a sú na to dva spôsoby:

1. Spawnpoint
Vytvor si objekt napr. obj_tank_spawn, odškrtni visible a rozmiestni ho na určité miesta, kde chceš, aby sa náhodne objavil a pri scripte použi toto:

Code: Select all

var pocet=instance_number(obj_tank_spawn);//zistí počet rozmiestnených objektov v roome
var nahodne=instance_find(obj_tank_spawn,random(pocet));//vráti náhodné id toho objektu
instance_create(nahodne.x,nahdone.y,obj_tank1);//spawne tank na určitom bode
Ak by to robilo neplechu, potom ešte skúsiť dať random do floor, aby sa zamedzilo vracaním desatinních čísel.
Poznám ešte jeden spôsob ako si spraviť kontrolované spawnpointy tím, že nemusia byť rozmiestnené objekty v roome ale to už by bola ťažšia vec pre teba.

Toto je však kontrolovaný náhodný systém tzv. spawnpoint, kde sú preddefinované miesta, kde sa má tank náhodne objaviť.

2. Randomly kompletely
Použi tento script na tanku(vlož ho do create):

Code: Select all

do{//premiestniť na náhodné miesto...
    x = floor(random(room_width)/32)*32;
    y = floor(random(room_height)/32)*32;
}//...ak je plocha voľná.
until(place_free(x,y));
Hodnota 32 je mriežka, záleží ako máš nastavené mriežkovanie v roome.

Toto je úplne náhodne rozmiestnenie tanku, pri instance_create nemusíš zadávať náhodné hodnoty, nakoľko sa tank pri objavení už určí náhodné miesto sám, ale musia byť v roome objekty, ktoré majú zaškrtnuté solid, inak tank to vrazí opäť do steny. Taktiež dať si bacha aj na tilesy, ak sú steny s tilesov ale nie s objektov, opäť riziko "nárazu" do steny tam je.
Whale
Posts: 2
Joined: December 31, 2019, 11:11 pm
Facebook: http://facebook.com/

Re: náhodná pozice při startu hry

Post by Whale »

Moc díky..Tohle mi pomohlo
Post Reply