Collision checking à la regulární výrazy

Sem vkládejte editovatelné kusy kódu a tutoriály.
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
Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Collision checking à la regulární výrazy

Příspěvek od D-Sheep » červen 19, 2014, 1:58 pm

Zase nějaký další zlepšováček...
Určitě se vám někdy stalo, že jste potřebovali zjistit, zda má do mřížky položená instance nějaké sousedy. Možná jste potřebovali trochu složitější tvary a podmínky a nevěděli jste, jak na to.
Připravil jsem pro vás malý skript, který to zjistí za vás. Stačí mu říct, jak chcete, aby byly objekty vedle sebe poskládané a on vám řekne, jestli to tak skutečně je.

V praxi: Potřebuju zjistit, jestli objekt plošiny ve skákačce má sousedy vlevo, vpravo a pod sebou... Uff, no pustím se do toho.

Kód: Vybrat vše

if (instance_position(x - sprite_width, y, object_index) != noone && instance_position(x + sprite_width, y, object_index) != noone && instance_position(x, y + sprite_height, object_index) != noone)
NE! To už nikdy!
ještě, že znám tohle:

Kód: Vybrat vše

if (check_instances_around("XXX111X1X", object_index))
Jéje, to mi krásně ušetřilo čas a nervy... Ale co to je a jak to použít? Musím skriptu předat svojí představu o rozmístění objektů tak, aby to pochopil. Určím mu, jak má vypadat každá z 9 pozic okolo dané instance pomocí znaků 0: pozice je volná, 1: na pozici má být instance, X: je mi to jedno.
Určím mu to po řádcích shora dolů, ať to má rychle hotový. Na řádku nad instancí je mi to fuk, tam se neptám. Instance vlevo a vpravo? To je vlastně plný řádek, tam budou tři jedničky. A pode mnou mě to zajímá pouze přímo vespod. A chci jen instance stejného typu. Woohoo! Nádhera!

A uměl by ten skript i povědět, jak to doopravdy okolo vypadá? Jistě, zavolám jeho bráchu get_instances_around(object_index) a ten mi řekne přesnou situaci. Co to vlasně vrátí? (jeden z mnoha příkladů)
Obrázek
Nechť jsou pro vás skripty tak užitečné, jako pro mě!

-> Stáhnout <-

Uživatelský avatar
Loric
Příspěvky: 208
Registrován: srpen 6, 2011, 9:01 am
[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: Collision checking à la regulární výrazy

Příspěvek od Loric » červen 22, 2014, 11:20 pm

Možná by se hodili ještě verze, kde zadáš jako parametr i jméno vlastního skriptu, který provadí kontrolu kolize. Vhodné, když provádíš kolize vlastním způsobem. Pak by bylo potřeba ještě sjednotit nějaké rozhraní pro tyto funkce.

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 0 hostů