Know-how, előadás, ütközés felderítése

Figyelem! Ahhoz, hogy ezzel az előadással dolgozhasson, képzési fájlokat kell itt letöltenie.

Az "ActscriptScript Interfaces" -ben megvizsgáltuk azokat a módokat, amelyekkel a felhasználó együttműködik a képernyőn lévő objektumokkal. Most megnézzük, hogyan reagálhatnak egymásnak az objektumok az ütközés észlelésekor. Teljes előadás az ütközések felderítéséről? Igen, mivel elmondjuk Önt az elkövetkező pillanatokról, miután megértettétek, akkor jól ismerik az ütközéseket.

Abban az időben, amikor én létrehozott oktatóanyagok és nyílt forráskódú fájlokat példaként, sok ember küldött nekem érdekes által létrehozott fájlok alapján rájuk az alapelvek vázolt a könyvben. Tekintettel erre a tényre, nem használok összetett grafikákat és túl nagy fájlokat. Fogok beszélni, néhány alapelv, hogy valóban megértsük őket, akkor próbálja ki tudásukat létre néhány egyszerű játék. Add hozzá képzeletednek egy részét és élvezd a programozást saját örömmel!

HitTest módszer

Először a legegyszerűbb módszerről beszélünk az ütközések felfedezéséről - hitTest. Ha elolvassa ezt a könyvet, akkor talán már használnia kellett a hitTest-et. Mindenesetre ezt a módszert alkalmaztuk az előző előadásban, de számos módon lehet használni, és most megfontoljuk.

A hitTest használatának két módja van. és a másodiknak két lehetősége van, összesen három különböző módszert alkalmaz a hitTest-szel. A növekvő bonyolultság érdekében megnézzük őket.

A legegyszerűbb értelmezés a hitTest. amint emlékszel az előző előadásról, a következő.

Itt egyszerűen ellenőrizzük a két film ütközését. Nem számít, milyen pozícióban vannak a filmek. Ha két film átfedi egymást, az "igaz" értéket visszaadják, ellenkező esetben "hamis". Ezért a hitTest szinte kizárólag az if utasítást használja az alábbiak szerint.

Határok téglalapjai

A hitTest használatakor ismernie kell az úgynevezett határokat. Ezek láthatatlan téglalapok, amelyek teljesen megfelelnek a film határainak. A tetején a téglalap felel meg a legfelső látható elem a film, az alsó - a legalsó látható elemet, és a bal és jobb szélét a téglalap megfelelnek a legtávolabbi bal és jobb pontokat a film. Ha tegye a film a munkahelyen, majd egy rá, válasszuk ki, akkor megjelenik egy kék doboz körül a film (ha nem módosította az alapértelmezett szín keretek). Ez a téglalap, amely a film határa:

Ez a határoló téglalap az elem, amelyet a hitTest az ütközések ellenőrzésére használ. Segítségével ez a folyamat gyorsan és hatékonyan zajlik, de sajnos sok esetben meglehetősen pontatlan eredményeket adhat. Kivéve, ha a szóban forgó film négyszögletes, i. E. A határ téglalap csak a filmet tartalmazza, a határ téglalap mindig magában tartalmaz egy extra helyet magában a filmben. Ezért a hitTest gyakran észlel ütközést, ha a filmek képei nem vizuálisan érintkeznek egymással. Íme egy tipikus példa a leírt esetre:

Hogyan lehet megkerülni ezt a hibát? Nem, ha csak a hitTest ezen verzióját használja. Ez az az ár, amelyet fizetni kell a módszer gyorsaságának és egyszerű használatának. Bár sok alkalmazáshoz ez a módszer nagyon alkalmas. Egy kis játék-shooterben, amit az előző előadásunkban készítettünk, minden gyorsan megindult, és nem vett észre semmilyen pontatlanságot. De képzelj el egy játékot, például Atari aszteroidáit, ahol a tárgyak lassan mozoghatnak. El fogja hozni a hajóját az aszteroida széléhez közel, de aztán hirtelen felrobban. - Nem értem meg! - mondja. Igen, mint látható, a hitTest ezen verziója nem lenne jó megoldás ebben a helyzetben.

Valószínűleg ezt a módszert már korábban, legalábbis az előző előadásban használta, ezért nem fogjuk vesztegetni az időt a példák vizsgálatával és használatával. Lépjünk tovább a hitTest következő módjára.

A shapeFlag használatával

Itt van az alapszintaxis a hitTest végrehajtásához a shapeFlag segítségével.

Tudom, hogy azonnal észrevette a shapeFlag paramétert. de ne siessen. Olvassuk el a kifejezést balról jobbra.

Kezdetben a movieClip_mc-t látjuk. ami nyilvánvalóan az ellenőrzött film neve. Figyeljük meg, hogy ezúttal csak egy filmet nézünk meg. Szóval, volt egy találat ebben a filmben? A válasz csak egy pont. Ezt a pontot a következő két paraméter határozza meg: x és y. Itt kérdezzük meg, hogy a pont (x, y) a movieClip_mc filmterületen belül van-e.

Most menj a shapeFlag paraméterre. Segítségével kiválaszthatjuk, hogy szükség van-e a film határok téglalapjának használatára. Ha a shapeFlag értéke hamis vagy 0, a hitTest egyszerűen ellenőrizni fogja, hogy a pont a filmben van-e. De ha meg shapeFlag „true”, vagy bármely nem zérus szám képesek leszünk túllépni a korlátai módszerével határ téglalapok, és ellenőrizze, hogy a pont a látható része a film.

Igen, ez a módszer sokkal hatékonyabb. A shapeFlag használata a hitTest módszer alternatívájaként meglehetősen gyakori. Valójában nagyon ritkán használtam a hitTest-et formFlag nélkül.

Most minden sokkal tisztességesebbnek tűnik, de mielőtt arra a következtetésre jutunk, hogy minden problémánk sikeresen megoldódott, meg kell tudnunk találni, honnan származnak az x és y értékei. Ne feledje, hogy az első módszer segítségével megvizsgáltuk a filmet egy másik filmhez képest. Ezzel szimulálhatjuk ezt a filmet, mint a filmet, amely a funkciót végzi, és a második film _x és _y paramétereit x és y hitTest paraméterekként. Ez fog kinézni.

Miután megnézzük a következő ábrát, meg fogjuk érteni, hogy milyen problémával nézünk szembe.

A támadás nem kerül regisztrálásra, mivel az x és y paraméterek itt a központ movieClip2_mc-re utalnak. amely nem a keresett felületen belül van.

Tehát kiszálltunk a tűzből és a tűzbe: Igen, tetszik a metaforák. Szeretnék egy kimerítő tanácsot adni Önnek arról, hogyan lehet ezt a problémát megoldani, de nem találtam igazán hatékony módszert. Ez egy olyan feladat, mint a Szent Grál keresés: filmet jelenítünk meg a shapeFlag segítségével, hogy ellenőrizzük a film hatását. Valójában mindig van egy kijárat, ezért ne érje a fejét a falhoz, és úgy gondolja, hogy valami nyilvánvalóan kimaradtál. Adok neked néhány tippet, hogy megkönnyítse az Ön számára.

  • A legfontosabb pont meglehetősen egyértelmű: minden módszer jó a különböző helyzetekben, ezért mindhárom módszerrel kísérletezzen és válassza ki a legmegfelelőbbet.
  • A legtöbb esetben, ha nagy és kicsi objektum van, akkor a legjobb, ha a nagy objektum a hitTest-et futtató film. és kicsi ahhoz, hogy paramétereket szolgáltasson X és Y számára.
  • Ha szabálytalan alakú objektummal foglalkozik, különösen akkor, ha annak mérete nagy, célszerűbb hitTest-et hívni ebből az objektumból, mivel szüksége van az objektum látható területének alakjára.
  • Ha két vagy több téglalap alakú tárgy van, használd a két film módszerének fő módját.

Ez nagyjából mindössze annyit kell tudnia a hitTestről. Most közvetlenül a bonyolultabb módszereket szeretném elérni az ütközések észleléséhez, de ha kétségei vannak, hogy jól ismerik a különböző típusú hitTest-et. kísérelje meg a következő gyakorlatot, amíg nem érted meg minden kérdést magadnak.

Kapcsolódó cikkek