はみ出ないように動く
よく紹介されているスクリプトに
- 自動車をコースにそって走らせたり、 魚が池から出ないように動かしたりする
ものがあります。
スクリプトでは
- オブジェクトの前側にセンサーに使う色で描き
- その部分にどの色が触れたかで進む方向を調整
します。
分類
センサーの個数、判定に用いる色で 次のように分類できます。
センサーの個数
- 前方に1つのセンサーを用いる
- 前方の左右、あわせて2つのセンサーを用いる
判定に用いる色
- 進めない部分の色を1つ指定する。
- 進める部分の色を1つ指定する。
以上の組み合わせで4パターン考えられます。
パターン1
- センサー1つ
- 進めない部分の色を指定
動かすオブジェクトに、センサーに使う印を描きます。
- このオブジェクトに使われていない色にすること
- 進む方向の先につけること
例(矢印で示した水色の部分)
動かしたい範囲の周りを、1色で囲みました。 もっと複雑な形でもかまいません。
色が同じであれば、いくつかに分けて描いてもよい。
スクリプトはこのように書けます。 ふちの色にぶつかったら反対向きに進みます。
意味は
- センサーの部分が茶色のところに触れたときは
- およそ180度回転する
乱数(40)は1~40の間の値を取るので 自動車を回すに用いる値は 161~200 のどれかになります。
パターン2
- センサー1つ
- 進める部分の色を指定
進める部分を1色で塗っています。
センサーが触れているのが進める部分の色かどうか判定し いいえのとき向きを変えています。
パターン1とほぼ同じですが、 花の絵の部分に進めるかどうかが異なります。
パターン3
- センサー2つ
- 進めない部分の色を指定
センサーを2つ描きます。
- このオブジェクトに使われていない色にすること
- 進む方向の左右の先につけること
例
動かしたい範囲の周りを、1色で囲みました。
ふちの色にぶつかったときの処理を
- 右のセンサーが当たったら左へ10度曲がる
- 左のセンサーが当たったら右へ10度曲がる
とした例です。
このままでは、 ぶつかったときにいつも同じ曲がり方をするので、 ふちの形と ぶつかりかたによっては動けなくなってしまうことがあります。
パターン1,2を参考にして乱数を加えるとよいでしょう。
パターン4
- センサー2つ
- 進める部分の色を指定
進める部分を1色で塗っています。
センサーが触れているのが進める部分の色かどうか判定し いいえのとき向きを変えています。 内容はパターン3と同じです。
カエルの絵の部分に進めるかどうかが パターン3の動作と異なります。
この場合も パターン1,2を参考にして乱数を加えるとよいでしょう。