welcome: please sign in
location: "etoysはみ出ないように動く"の差分
6と11のリビジョン間の差分 (その間の編集: 5回)
2012-07-03 03:02:24時点のリビジョン6
サイズ: 2210
編集者: masahiko
コメント:
2012-07-06 00:31:47時点のリビジョン11
サイズ: 3770
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
#acl All:
行 10: 行 9:
 * オブジェクトの前側にセンサーとなるものを設定し
 * センサーにどの色が触れたかで進む方向を調整
 * オブジェクトの前側にセンサーに使う色で描き
 * その部分にどの色が触れたかで進む方向を調整
行 34: 行 33:
もっと複雑な形でもかまいません。<<BR>>
色が同じであれば、いくつかに分けて描いてもよい。
行 36: 行 37:
の色にぶつかったら反対向きに進みます。 ふちの色にぶつかったら反対向きに進みます。
行 48: 行 49:
進める部分を1色で塗っています。
行 49: 行 51:
センサーが触れているのが進める部分の色かどうか判定し
'''いいえ'''のとき向きを変えています。
行 50: 行 54:
パターン1とほぼ同じですが、
花の絵の部分に進めるかどうかが異なります。
行 54: 行 60:
センサーを2つ描きます。
 . このオブジェクトに使われていない色にすること
 . 進む方向の左右の先につけること
行 55: 行 65:
動かしたい範囲の周りを、1色で囲みました。
行 56: 行 67:
ふちの色にぶつかったときの処理を
 . 右のセンサーが当たったら左へ10度曲がる
 . 左のセンサーが当たったら右へ10度曲がる
とした例です。
行 57: 行 72:
このままでは、
ぶつかったときにいつも同じ曲がり方をするので、
ふちの形と
ぶつかりかたによっては動けなくなってしまうことがあります。

パターン1,2を参考にして乱数を加えるとよいでしょう。
行 61: 行 82:
進める部分を1色で塗っています。
行 62: 行 84:
センサーが触れているのが進める部分の色かどうか判定し
'''いいえ'''のとき向きを変えています。
内容はパターン3と同じです。
行 63: 行 88:
カエルの絵の部分に進めるかどうかが
パターン3の動作と異なります。

この場合も
パターン1,2を参考にして乱数を加えるとよいでしょう。

はみ出ないように動く

よく紹介されているスクリプトに

  • 自動車をコースにそって走らせたり、 魚が池から出ないように動かしたりする

ものがあります。

スクリプトでは

  • オブジェクトの前側にセンサーに使う色で描き
  • その部分にどの色が触れたかで進む方向を調整

します。


分類

センサーの個数、判定に用いる色で 次のように分類できます。

センサーの個数

  1. 前方に1つのセンサーを用いる
  2. 前方の左右、あわせて2つのセンサーを用いる

判定に用いる色

  1. 進めない部分の色を1つ指定する。
  2. 進める部分の色を1つ指定する。

以上の組み合わせで4パターン考えられます。


パターン1

  • センサー1つ
  • 進めない部分の色を指定

動かすオブジェクトに、センサーに使う印を描きます。

  • このオブジェクトに使われていない色にすること
  • 進む方向の先につけること

例(矢印で示した水色の部分)

  • car11.png

動かしたい範囲の周りを、1色で囲みました。 もっと複雑な形でもかまいません。
色が同じであれば、いくつかに分けて描いてもよい。

  • car21.png

スクリプトはこのように書けます。 ふちの色にぶつかったら反対向きに進みます。

  • car22.png

意味は

  • センサーの部分が茶色のところに触れたときは
    • およそ180度回転する

乱数(40)は1~40の間の値を取るので 自動車を回すに用いる値は 161~200 のどれかになります。


パターン2

  • センサー1つ
  • 進める部分の色を指定

進める部分を1色で塗っています。

  • car12.png

センサーが触れているのが進める部分の色かどうか判定し いいえのとき向きを変えています。

  • car13.png

パターン1とほぼ同じですが、 花の絵の部分に進めるかどうかが異なります。


パターン3

  • センサー2つ
  • 進めない部分の色を指定

センサーを2つ描きます。

  • このオブジェクトに使われていない色にすること
  • 進む方向の左右の先につけること

  • car31.png

動かしたい範囲の周りを、1色で囲みました。

  • car32.png

ふちの色にぶつかったときの処理を

  • 右のセンサーが当たったら左へ10度曲がる
  • 左のセンサーが当たったら右へ10度曲がる

とした例です。

  • car33.png

このままでは、 ぶつかったときにいつも同じ曲がり方をするので、 ふちの形と ぶつかりかたによっては動けなくなってしまうことがあります。

パターン1,2を参考にして乱数を加えるとよいでしょう。


パターン4

  • センサー2つ
  • 進める部分の色を指定

進める部分を1色で塗っています。

  • car41.png

センサーが触れているのが進める部分の色かどうか判定し いいえのとき向きを変えています。 内容はパターン3と同じです。

  • car42.png

カエルの絵の部分に進めるかどうかが パターン3の動作と異なります。

この場合も パターン1,2を参考にして乱数を加えるとよいでしょう。

etoysはみ出ないように動く (最終更新日時 2012-07-06 00:31:47 更新者 masahiko)