
Scratch 画面の下端に触れたとき

Scratch(スクラッチ)でプログラムをつくっていて
特にゲームをつくっていて
スプライトが画面下端に触れたとき
という条件をつけたいとき
ないでしょうか?
どのように実現しますか?
「端に触れた」ときなら、思いつく方も多いはず

これです
これともし~なら
でできそうですよね
でも、今回は下端のみにしたい
この方法について解説します
座標を条件にする方法
まず思いつくのが座標をつかう方法です
上下なので、Y座標ですね
Y座標の下限は-180ですので、
-180あたりで制御するとできそうです



こんな感じになります
座標はスプライトの中心の位置ですので、
これだと少しずれてしまいます
微調整すると


いい感じですね
ただ、この方法はデメリットがあります
デメリット①スプライトのコスチュームや大きさ、向きなどが変わると、スプライトの下端が変わってしまいうまくいかない
どいうことかと言うと
例えば、大きさを150%にしてみましょう

スプライトの大きさが変わると、スプライトの下端(足の先)
も変わるので、ずれてしまいます
最初から最後まで同じ大きさだったら、条件文を調整すれば済みますが
プログラムの途中で大きさが変わるといったこともありますよね
向きやコスチュームも同様です
デメリット②スプライトの歩数(動き)が速いと、反応が遅れる
これは少し分かりにくいと思いますが、
スプライトを速く動かすために、
Y座標を-50ずつ変えるとします
Y座標<-120のとき
のように基準線を-120としていると
30も飛び越えてからようやく止まることになります

極端な例ですが、
もう少し小さな数字でも当然発生します
座標を条件文にすると
このような問題が発生します
色を条件にする方法
もう一つの方法が色を条件にする方法です

このブロック使ったことありますか
今回はこのブロックが活躍してくれます
まず背景の下端に細長い長方形をおきます
塗りつぶしの色は好きな色
但し背景の他の場所で使われていない色をつくりましょう
枠線はなしにして下さい

こんなイメージです

今回は分かりやすいように目立つピンク色にしましたが、
目立たない色でも構いません
これで準備は完了
色に触れたブロックを条件に使う
先ほど登場した色に触れたブロックを使います
ブロックの色部分をクリックしてみてください
先ほど作ったピンク色を指定します

色部分をクリックして、色選択画面を出します
スポイトのようなマークを押すと、画面上の好きな箇所の色を指定することができますから
先ほどつくったピンクの長方形をクリックすると
ピンク色を指定することができます
あとはこのブロックをつかって

大きさが100%のとき

上手く行きましたね
大きさを150%に変えても

こちらも上手く行きました
色を使った条件文だと、座標の場合のような調整が不要で、
大きさや向き、コスチュームが変わってもうまく判定してくれます
もうお気づきかと思いますが、
下端だけじゃなくて、
上端、右端、左端でも同じように対応できます
ぜひ使いこなしてください