Innen: Hungarian Scratch-Wiki
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:
- 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.
- 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]