welcome: please sign in
location: "etoysはみ出ないように動く"の差分
1と10のリビジョン間の差分 (その間の編集: 9回)
2012-07-03 02:03:33時点のリビジョン1
サイズ: 792
編集者: masahiko
コメント:
2012-07-04 02:09:44時点のリビジョン10
サイズ: 3787
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 15: 行 15:
センサーの個数、判定に用いる色で
次のように分類できます。
行 16: 行 18:
2つの方法があります。
* 前方に1つのセンサーを用いる
 * 前方の左右、あわせて2つのセンサーを用いる
 1. 前方に1つのセンサーを用いる
 1. 前方の左右、あわせて2つのセンサーを用いる
行 20: 行 21:
2つの方法があります。
 * 動ける部分の色を1つ指定する。
 * 動けない部分の色を1つ指定する。
 1. 進めない部分の色を1つ指定する。
 1. 進める部分の色を1つ指定する。
以上の組み合わせで4パターン考えられます。
----
=== パターン1 ===
 * センサー1つ
 * 進めない部分の色を指定
動かすオブジェクトに、センサーに使う印を描きます。
 . このオブジェクトに使われていない色にすること
 . 進む方向の先につけること
例(矢印で示した水色の部分)
 . {{attachment:car11.png}}
動かしたい範囲の周りを、1色で囲みました。
もっと複雑な形でもかまいません。<<BR>>
色が同じであれば、いくつかに分けて描いてもよい。
 . {{attachment:car21.png}}
スクリプトはこのように書けます。
ふちの色にぶつかったら反対向きに進みます。
 . {{attachment:car22.png}}
意味は
 . センサーの部分が茶色のところに触れたときは
  . およそ180度回転する
乱数(40)は1~40の間の値を取るので
自動車を回すに用いる値は 161~200 のどれかになります。

----
=== パターン2 ===
 * センサー1つ
 * 進める部分の色を指定
進める部分を1色で塗っています。
 . {{attachment:car12.png}}
センサーが触れているのが進める部分の色かどうか判定し
'''いいえ'''のとき向きを変えています。
 . {{attachment:car13.png}}
パターン1とほぼ同じですが、
花の絵の部分に進めるかどうかが異なります。
----
=== パターン3 ===
 * センサー2つ
 * 進めない部分の色を指定
センサーを2つ描きます。
 . このオブジェクトに使われていない色にすること
 . 進む方向の左右の先につけること

 . {{attachment:car31.png}}
動かしたい範囲の周りを、1色で囲みました。
 . {{attachment:car32.png}}
ふちの色にぶつかったときの処理を
 . 右のセンサーが当たったら左へ10度曲がる
 . 左のセンサーが当たったら右へ10度曲がる
とした例です。
 . {{attachment:car33.png}}
このままでは、
ぶつかったときにいつも同じ曲がり方をするので、
ふちの形と
ぶつかりかたによっては動けなくなってしまうことがあります。

パターン1,2を参考にして乱数を加えるとよいでしょう。
----
=== パターン4 ===
 * センサー2つ
 * 進める部分の色を指定
進める部分を1色で塗っています。
 . {{attachment:car41.png}}
センサーが触れているのが進める部分の色かどうか判定し
'''いいえ'''のとき向きを変えています。
内容はパターン3と同じです。
 . {{attachment:car42.png}}
カエルの絵の部分に進めるかどうかが
パターン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)