提供: Japanese Scratch-Wiki

2018年8月14日 (火) 09:37時点におけるApple bot (トーク | 投稿記録)による版 (ひらがなヘッダの追加 (Bot))

このきじは ひらがなのページがありません。ごめんなさい。
() 色に触れた
[#000] 色に触れた
カテゴリ 調べる
タイプ 真偽

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

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

引数

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

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

注意

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

仕様上の制限

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

アンチエイリアス

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

パフォーマンス

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

使用例

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

関連項目

出典

  1. https://scratch.mit.edu/projects/10941245/
  2. https://scratch.mit.edu/projects/139152265/