//@pnavi
[[←前>オブジェクトを動かす]] [[次→>オブジェクトをコピーする]] [[チュートリアルトップ>チュートリアル]]
**オブジェクトを動かす2
先ほど書いたプログラムについて解説します。
//prog
1:extends SpriteChar;
2:
3:while(x<$screenWidth) {
4: x+=1;
5: update();
6:}
-1行目は「おまじない」だと思ってとりあえず無視してください。
-3行目は「自分のx座標が画面右端の座標($screenWidth)より小さい($screenWidthより左側である)間、で囲まれた処理(4,5行目)を実行しなさい」という意味になります(参考:[[while文>while]])
-4行目は、x座標を1増加、つまり右に1ドット分移動します
-5行目は、画面のかきかえを行います(参考:[[updateメソッド>update]])
もう少し複雑な動きをするオブジェクトを作ってみましょう
[[オブジェクトを作る>オブジェクトを作る]]を参考に、新しいオブジェクトを作成します
&ref(class2.png);
新しいオブジェクトをダブルクリックして、次のように入力します(先頭のextends SpriteChar;は自動的に入力されているので新たに入力する必要はありません)
//prog
extends SpriteChar;
while(x<$screenWidth) {
y+=vy;
vy+=0.1;
if (y>$screenHeight) {y=$screenHeight; vy=-vy;}
x+=1;
update();
}
実行してみましょう。オブジェクトが跳ねながら右に移動する様子が見えたと
思います。
さっきと違うのは、この3行が追加されたところです
//progfrac
4: y+=vy;
5: vy+=0.1;
6: if (y>$screenHeight) {y=$screenHeight; vy=-vy;}
-4行目は、自分のy座標をvyだけ加算します。つまりvyはyの速度をあらわします
-5行目は、vyに0.1を加えます。yの速度に0.1を加えるので、0.1はyの加速度(重力)をあらわします。
-6行目は、跳ね返りの処理です。まず、
//progfrac
if (y>$screenHeight) ...
これは、もし( if )yが画面下端の座標($screenHeight)より大きくなったら、つまり
yが画面下端より下になったら、その後ろの{とで囲まれた部分を実行しなさい
という意味です。
そして、その{と}で囲まれた部分
//progfrac
... {y=$screenHeight; vy=-vy;}
これは、yを$screenHeightにして、下にはみ出ないようにします。
さらにvyの符号を反転(=移動方向のy成分を反転)します。
この「もし~なら~する」という記述は[[if]]文と呼ばれ、今後もよく出てくるので覚えておいてください
//plainForm
書式:
if (条件) 処理
条件に書いた式が真であるときだけ処理を行います
//@pnavi
[[←前>オブジェクトを動かす]] [[次→>オブジェクトをコピーする]] [[チュートリアルトップ>チュートリアル]]