2016年6月16日木曜日

キャラクターを歩かせる方法 その1

Scratchを初めて最初に作るプログラムの一つにキャラクター(スプライト)をキー入力で動かすと言うものでしょう。

Scratchでは、キャラクターを動かす方法は割りと簡単です。


「スクリプト」-「動き」の中にある「○歩動かす」ブロックを使用することで、キャラクターの向いている方向へ指定の歩数分だけ動かすことが出来ます。

そして、動かすタイミングはイベントで決める。と言うのがまず考えつく方法です。


「○○キーが押されたとき」ブロックを利用することで、「右矢印キーが押されたとき」に10歩動かすという動作が可能になります。


こんな感じになりますね。
右向き矢印が押されたら、キャラクターを右に向け、10歩動かす。歩く動作が可能なコスチュームが用意されているキャラクターであれば、コスチュームを「次のコスチューム」へ変更します。


サンプルプロジェクト→「キャラクターを歩かせる2つの方法(1つ目)


ただ…、この方法でキャラクターを歩かせると一つの問題にぶち当たります。

歩き始めが遅い

そうなんです。このイベントでキー入力を受け取る方法でキャラクターを動かすと、動作の始めが少し遅くなるんです。

これは、Scratchの仕様と言うよりは、キーボードの仕様です。

文章などを入力している時に、同じキーを押し続けると繰り返し入力されますよね。
でも、最初はこのScratchのプロジェクトの様に少し間が相手から繰り返し入力がされるようになります。
これは、誤入力の防止を行うための機能で、最初だけ少し遅れてから繰り返し入力が始まるようになっています。

でも、これだとゲームを作成する場合には不便です。
敵を避けようとした時に、一歩遅れて動くのではゲームになりません。

それを解決するには、キー入力のイベントが発生するのを待っていてはダメです。
キーの入力状態を自分で見に行くことが必要なのです。