Collision checking à la regulární výrazy

Sem vkládejte editovatelné kusy kódu a tutoriály.
Post Reply
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

Collision checking à la regulární výrazy

Post by D-Sheep »

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.

Code: Select all

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:

Code: Select all

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ů)
Image
Nechť jsou pro vás skripty tak užitečné, jako pro mě!

-> Stáhnout <-
User avatar
Loric
Posts: 208
Joined: August 6, 2011, 9:01 am

Re: Collision checking à la regulární výrazy

Post by Loric »

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.
Post Reply