- 追加された行はこの色です。
- 削除された行はこの色です。
- 自機を動かす へ行く。
//@pnavi
[[←前>シューティングゲームの作成]] [[次→>弾を撃つ]] [[トップ>シューティングゲームの作成]]
**自機を動かす [#te84d8b4]
まず、「ファイル」>「メインメニュー」で最初の画面に戻ってください。
&ref(returnMain.png);
[[新規プロジェクト>新規プロジェクトを作る]]を参考に新規ページを作成してください。
-自機を作る
自機を作ってみましょう。[[オブジェクトを作る>オブジェクトを作る]]を参考にオブジェクトを作成します
&ref(mkmychar.png);
[[オブジェクトのキャラクタパターンを指定する>オブジェクトのキャラクタパターンを指定する]]を参考に、自機のパターンを指定します。先ほど用いた"Projects"フォルダの下のSample.bmpを使います
&ref(selPatmy.png);
-自機の動きを定義する
自機をダブルクリックし、次のように入力します。
//prog
extends SpriteChar;
while(1) {
if (getkey(39)>0) x=x+3;
if (getkey(37)>0) x=x-3;
update();
}
自機の位置は画面下のほうがよいので、ドラッグして移動しておきます。
実行してみましょう。カーソルキーの右と左で自機を動かせます。
まず
//progfrac
while(1) {...
について解説します。whileは()内の条件が成り立っている間次の{}内を実行するものですが、条件のところに 1と書いてあります。1というのは「いつでも成り立つ」といった意味があります。つまりwhile(1)と書くと、その後ろの処理を永久に行うことになります。(参考:[[while>while]])
次に、その永久に繰り返される処理の内容を解説していきます。
getkey(x)は、キーが押されているかどうかの判定を行います。
xは調べたいキーの番号で 39がカーソルキーの右, 37が左です
getkey(x)はキーの状態によって、次のような値を表します
-0:押されていない
-1:今押されたばかり
-2以上:押しっぱなしになっている
''※'' 他のキーの状態を調べたい場合は[[getkey]]を参照してください
以上をふまえて、移動の仕組みをまとめると、次のようになります。
//prog
if (getkey(39)>0) x=x+3; ↑右がおされたら↑右に移動
if (getkey(37)>0) x=x-3; ↑左がおされたら↑左に移動
-画面はみだし判定
ところで、このままだと右端や左端にはみだしてもそのまま画面外を移動できてしまうので、次のように変更します
//prog
extends SpriteChar;
while(1) {
if (getkey(39)>0 && x<$screenWidth ) x=x+3;
if (getkey(37)>0 && x>0 ) x=x-3;
update();
}
このように&&で条件をつなげると「~かつ~ならば」という記述ができます。
//prog
if (getkey(39)>0 && x<$screenWidth) x=x+3;
↑右がおされて ↑かつ、画面右端に到達してないなら↑右に移動
if (getkey(37)>0 && x>0) x=x-3;
↑左がおされて ↑かつ、画面左端に到達してないなら↑左に移動
//@pnavi
[[←前>シューティングゲームの作成]] [[次→>弾を撃つ]] [[トップ>シューティングゲームの作成]]
.