náhodná pozice při startu hry

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
Whale
Příspěvky: 2
Registrován: prosinec 31, 2019, 11:11 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

náhodná pozice při startu hry

Příspěvek od Whale » leden 21, 2020, 4:58 pm

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

Uživatelský avatar
ipq
Příspěvky: 928
Registrován: srpen 15, 2011, 7:31 pm
Bydliště: Petržalka
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

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

Příspěvek od ipq » leden 23, 2020, 1:25 am

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:

Kód: Vybrat vše

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):

Kód: Vybrat vše

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
Příspěvky: 2
Registrován: prosinec 31, 2019, 11:11 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

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

Příspěvek od Whale » leden 23, 2020, 11:05 am

Moc díky..Tohle mi pomohlo

Odpovědět
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů