流体力学ソース

昨日の流体力学のプログラム解説

起動:Aroe から「wing」をたどると見られる

基本事項

  • onAppear 出現時に1回だけ行う動作(なくてもよい)
  • onUpdate 毎フレームに行う動作

Wing.yb: 翼の部分.ついでに空気の出現(50粒)をしてもらっている.

  • appear(オブジェクト) は,オブジェクトを出現させる.
  • オブジェクトはXMLぽく書く.
    • <クラス名 変数=初期値.../>
extends Actor;
onUpdate {
// フレームごとの処理
  if(cnt<50)  appear();
  cnt++;
}
// 変数宣言
cnt=0;

Air.yb 空気の部分.えーと,跳ね返りの部分の説明は省略.

  • %w=Root.wing は,ローカル変数 w に 翼を代入する
    • Root は,画面上のオブジェクトを格納するオブジェクト
    • %w の % は「ローカル変数を宣言します」という意味.
  • w.getColorAt(x,y) は, wの色情報を読み出す.(x,y)は画面上の座標
extends Actor;
onUpdate {
// フレームごとの処理
  x+=vx+spd;
  y+=vy;
  %w=Root.wing;
  if (w.getColorAt(x,y)>0) {
    bounce();
  }
  if (y>w.y+40) y-=80;
  if (y<=w.y-40) y+=80;
  if (x>350) x-=250;
  if (x<100) vx=0;
}
bounce {
  %w=Root.wing;
  %sx=x-vx-spd;
  %sy=y-vy;
  for (%i=0 ; i<360 ; i+=45) {
    if (w.getColorAt(x+cos(i)*5,y+sin(i)*5)>0) {
       vx-=cos(i);vy-=sin(i);
    }
  }
  x=sx;y=sy;
}
spd=5;
// 変数宣言
onAppear {
  vy=rnd(5)/5;
  vx=rnd(5)/5;
}
int vx;
int vy;