こんにちは、まなゲー池田です。
「マウス操作で迷路ゲーム(1)」の続きをやっていきます。
マウスポインタの後を追って移動するキャラクターをゴールまで導く時間を競うゲームを作っていきますが、前回まずポインタを追いかけるスプライトを作るところまでやりました。
ネコさんはなぜ「荒ぶる」のか?
ポインタを追いかけている間はいいのですが、追いついた後も立ち止まらず、ポインタの周りを激しく動き回るネコさん。これは、1回あたり10歩ずつ(10ピクセルずつ)移動するネコさんが、いつも最後の1回の移動でマウスポインタを通り越してしまうことが原因で起こります。
通り過ぎてしまうので、反対を向いて戻ろうとする。するとまた通り過ぎてしまうので、また振り向いて戻ろうとする。これを延々とくりかえしてしまうために「荒ぶっている」感じになってしまうのです。
通り過ぎてしまう前に立ち止まるようにしたい
ということで、マウスポインタまでの距離をしらべて、「次の移動で通り過ぎてしまう」とわかったら、そこで移動をやめるようにします。そのままのプログラムが組めればいいのですが、ちょっと工夫が必要で、「マウスポインタまでの距離が、1回に移動する距離よりも小さいときだけ移動する」というように指定してあげなければいけません。
変数「スピード」と「タイム」を準備
これまで1回の移動距離を10としてきました。そのままでいきますが、同じ数をあちこちで使うことになりますし、後で変えたくなるかもしれないので、移動速度を入れておく用に変数を作っておきます。(ついでに後から使うことになる「タイム」変数も作っておきます)
一定以上離れているときだけ移動するようにする
変数の準備が整ったので、これを使って、ネコさんの移動に制限をつけていきます。
- 初期化の部分で「スピードを10にする」
- 「ずっと」の内側に「もし、マウスのポインターまでの距離 > スピードなら」を追加
下の画像のように組み上げます。
これでもう、ネコさんが荒ぶってしまうことはありません。
クリックするまで動き出さないようにする
落ちつきのでてきたネコさんですが、旗ボタンクリックと同時にマウスポインタへ向けて突進してくるのもちょっと困ります。クリックされるまで待ってもらいましょう。
「〜まで待つ」ブロックを使って、下図のように追加します。
いくつかの条件を同時にチェックしたい場合には、今回のように「〜かつ・・・」ブロックを使います。
これで、迷路探索の準備がととのいました。
次回は、迷路を作ってその中を移動できるようにしていきます。