Érintesz () színt? (blokk)

Az Érintesz () színt? blokk egy érzékelő blokk és egy logikai blokk is egyben. Ez az utasításblokk azt ellenőrzi, hogy az adott szereplő érintkezik-e a paraméterként megadott színnel. Ha érinti, akkor "igaz" értéket ad vissza a blokk, különben pedig hamisat.

Széles körben alkalmazható az ütközések észlelésére. Gyakran használják a platformer játékokban.

Argumentum

Az érzékelendő színt a következő kétféleképpen lehet megadni:

  1. Kattintsunk a blokk színes négyzetére, majd mozgassunk az egérmutatót a beállítandó szín föle és kattintsunk rá. Ahogyan az egeret mozgatjuk, a négyzet színét folyamatosan frissíteni fogja az aktuálisan az egérmutató alatt találhatóra. Amikor sikerült megtalálni azt a színt, amit szeretnénk beállítani, akkor azt egy kattintással tudjuk fixálni. (Megjegyzés: ha az egér nincsen a játéktérben, akkor a színt jelző négyzet nem fog reagálni.) Például, ha az egérmutató éppen a kék szín felett áll, amikor kattintunk, akkor a színt jelző négyzet kékre vált.
  2. Helyezzünk operátor blokkot a színjelző négyzetbe, a következő formában:
érintesz ((((r) * (65536)) + (((g) * (256)) + (b))))színt?

ahol "r","g" és "b" a színek RGB megadásában szereplő számokat jelölik.

Felmerülhető problémák

Az Érintesz () színt? blokk okozhat váratlan/nem várt eredményeket is.

Beépített korlátok

Érzékelhető, hogy az Érintesz () színt? blokk nem mindig ad hamis értéket, ha a szereplő éppen nem érinti a meghatározott színt. Ez azért van, mert a színérzékelésnek a Scratch-ben van egy beépített korlátja, mely csökkenti a feldolgozási időt. Míg a játéktér több mint 16 millió színt képes megjeleníteni, addig a Scratch jóval kevesebb színt tud megfelelően kezelni (itt kipróbálhatod). Ez azt jelenti, hogy sokszor az Érintsz () színt? blokk "hamis pozitív" eredményt fog visszaadni, amikor a meghatározott színnel nem azonosat, de ahhoz nagyon hasonlót érzékel. Sok Scracth-elő lehet, hogy soha nem is érzékeli ezt a problémát, de azoknak akik abszolút precízen szeretnék használni a színérzékelést, nem árt ha ezt fejben tartják.

Példák a használatra

  • Egy szereplő mozgatása, amíg nem érint színt
ismételd eddig: <érintesz [#000000] színt?>
  menj (10) lépést
  • A szereplő akkor csináljon valamit, ha érint egy konkrét színt, pl. ha érintkezik a kékkel (vízzel), akkor reagáljon rá valahogy.
ha <érintesz [#0000FF] színt?> akkor
 mondd: [Vizet találtam!] (2) mp-ig
  • Állítsuk meg a lövedékeket, ha eltalálják a megfelelő színű falakat.
ismételd eddig: <érintesz [#FF0000] színt?>
 menj (10) lépést
end
töröld ezt a másolatot
  • Jelezzük, ha a szereplő zsákutcába ment az útvesztőben.
mindig
 ha <érintesz [#006400] színt?> akkor
  mondd: [Zsákutca!] (1) mp-ig
  • Akadályozzuk meg, hogy a szereplő átmenjen a falakon!
mindig
 ha <érintesz [#FFFF00] színt?> akkor
   [x-sebesség v] legyen [0]
  • Állítsuk le a játékot, ha a szereplő érintette a színt!
mindig
 ha <érintesz [#00FFFF] színt?> akkor
  mondd: [Játék vége!] (1) mp-ig
  küldj üzenetet: [játék vége v]


Lásd még

  • A lap utolsó módosítása: 2017. május 11., 08:45