提供:Japanese Scratch-Wiki

このきじは ひらがなでよめます。ひらがなでよむ
() 色に触れた
[#000] 色に触れた
カテゴリ 調べる
タイプ 真偽

() 色に触れたブロック調べるブロック真偽ブロック)は、実行中のスプライトが特定の色に触れたかどうかを調べるブロックである。特定の色に触れていれば、真(True:はい)を返す。また、複数の色に触れている場合は、触れている全ての色にtrueを返す。

このブロックは、衝突を調べるときに広く使用されている。特にプラットフォーマーで使用されることが多い。

引数

調べる色については、次の2つの方法で指定できる。

  1. ブロック内のカラースウォッチをクリックしてから、指定したい色のある場所までマウスポインターを移動して、その場所をクリックする。この場合、マウスの位置にあわせて、カラースウォッチの色も変化していくので、カラースウォッチがほしい色になったのを確認してそこでマウスをクリックすれば、無事にその色がセットされる(マウスのポインターがScratchプロジェクトの外に出ているときは、スウォッチの色が変化しないので注意)。たとえば、マウスポインターの下に青色の上にあるときにクリックすれば、カラースウォッチの色も青色になる。
  2. カラースウォッチに次のような演算ブロックを入れる:
<(((r) * (65536)) + (((g) * (256)) + (b))) 色に触れた>
「r」「g」「b」には、Red(赤)、Green(緑)、Blue(青)を0〜255の範囲で標準化した値が入る。

注意

() 色に触れたブロックは、意図しない結果を生むことがある。

仕様上の制限

スプライトが指定した色に触れていないからといって、() 色に触れたブロックが常に「偽:False」を返すとは限らない。この原因は、Scratchが色を調べるときの処理時間を減らすことを目的とした[要出典]、実装上の制限によるものである。ステージでは1600万以上の色を表現できる一方、Scratchが正しく処理できる色の数はずっと少ない[1]。つまり、『「() 色に触れたブロック」は、異なるけれどよく似た色を調べた場合、「間違った「真」」を返すことが多い』ということである。

アンチエイリアス

画像の中には、Scratchペイントエディターではギザギザに見えているものであっても、ステージ上でアンチエイリアスが適用されているものがある。そのため、クリックして色を選択する場合、アンチエイリアスとして薄くなっている端のほうの色を選択しないよう注意が必要である。

パフォーマンス

このブロックは、() に触れた (ブロック)に比べると処理速度が遅いので注意が必要である[2]。「画面を再描画せずに実行する」に指定した() カスタムブロックの中で実行するとパフォーマンスが改善するが、同じカスタムブロック内で「() に触れた (ブロック) 」を使うと、「() 色に触れた」ブロックが早くなった以上にパフォーマンスが低下する。

使用例

  • スプライトを特定の色に触れるまで動かす。
<[#000000] 色に触れた>まで繰り返す
(10) 歩動かす
end
  • スプライトが特定の色に触れたら何かさせる。たとえば、青色(水)に触れたら、それに反応する。
もし <[#0000FF] 色に触れた> なら
[水を見つけたぞ!] と (2) 秒言う
end
  • 特定の色のカベにぶつかったら弾丸を消去する。
<[#cf4141] 色に触れた>まで繰り返す
 (10) 歩動かす
end
このクローンを削除する
  • スプライトが迷路の行き止まりに到達したかどうかを調べる。
ずっと
もし <[#007f00]色に触れた> なら
[行き止まり!] と (1) 秒言う
  • スプライトのカベ通り抜けを禁止する。
ずっと
もし <[#ffff7f]色に触れた> なら
[x速度 v] を (0) にする
  • 指定した色に触ったらゲーム終了する。
ずっと
もし <[#01efff]色に触れた> なら
[ゲームオーバー]と(1) 秒言う
 (ゲームオーバー v)を送る

関連項目

出典

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。