Tonyu System 1 - wiki


←前次→チュートリアルWikiトップ

チュートリアル - 基礎編 (4/9)

オブジェクトを動かす2

先ほど書いたプログラムについて解説します。

1: extends SpriteChar;
2: 
3: while(x<$screenWidth) {
4:   x+=1;
5:   update();
6: }
  • 1行目は「おまじない」だと思ってとりあえず無視してください。
  • 3行目は「自分のx座標が画面右端の座標($screenWidth)より小さい($screenWidthより左側である)間、{}で囲まれた処理(4,5行目)を実行しなさい」という意味になります(参考:while文)
  • 4行目は、x座標を1増加、つまり右に1ドット分移動します
  • 5行目は、画面のかきかえを行います(参考:updateメソッド)

もう少し複雑な動きをするオブジェクトを作ってみましょう

オブジェクトを作るを参考に、新しいオブジェクトを作成します

class2.png

新しいオブジェクトをダブルクリックして、次のように入力します(先頭のextends SpriteChar;は自動的に入力されているので新たに入力する必要はありません)

extends SpriteChar;

while(x<$screenWidth) {
  y+=vy;
  vy+=0.1;
  if (y>$screenHeight) {y=$screenHeight; vy=-vy;}
  x+=1;
  update();
}

実行してみましょう。オブジェクトが跳ねながら右に移動する様子が見えたと 思います。

さっきと違うのは、この3行が追加されたところです

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行目は、跳ね返りの処理です。まず、
if (y>$screenHeight) ...

これは、もし( if )yが画面下端の座標($screenHeight)より大きくなったら、つまり yが画面下端より下になったら、その後ろの{}で囲まれた部分を実行しなさい という意味です。

 そして、その{}で囲まれた部分

 ... {y=$screenHeight; vy=-vy;}

これは、yを$screenHeightにして、下にはみ出ないようにします。 さらにvyの符号を反転(=移動方向のy成分を反転)します。

この「もし~なら~する」という記述はif文と呼ばれ、今後もよく出てくるので覚えておいてください

書式

if (条件) 処理

条件に書いた式が真であるときだけ処理を行います


←前次→チュートリアルWikiトップ