このWikiは古くなりました:新しいWikiへ移動


//@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
[[←前>オブジェクトを動かす]]  [[次→>オブジェクトをコピーする]]  [[チュートリアルトップ>チュートリアル]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS