用途別リファレンス

オブジェクトを動かす

特定の座標に向けて弾を撃つ

下のプログラムにおいて,

Main

$player=new Player{x=100,y=100};
new Shooter{x=200,y=200};

Player

pad=new APad; // APadの作成
while(true){
  x+=pad.vx*5;
  y+=pad.vy*5;
  update();
}

Shooter

while(true) {
    if(rnd(60)==0){
        new Bullet{x:x, y:y, p:25};
    }
    update();
}

Bullet

// $playerの座標と自分の座標を比較
dx=$player.x-x;
dy=$player.y-y;
d=dist(dx,dy);//$playerまでの距離
vx=dx/d*5; // 移動速度(x座標)
vy=dy/d*5; // 移動速度(y座標)
while(!screenOut()){
  x+=vx;//移動速度の分だけxを変化させる
  y+=vy;//移動速度の分だけyを変化させる
  update();
}
die();

角度を指定して発射

Bulletオブジェクトは次のように書くこともできます.特定の座標から角度をずらして発射
したい場合はこちらのほうが便利です.

Bullet

// $playerの座標と自分の座標を比較
dx=$player.x-x;
dy=$player.y-y;
dir=atanxy(dx,dy);//角度を計算
vx=cos(dir)*5;//角度に応じてvx,vyを設定
vy=sin(dir)*5;
while(!screenOut()){
  x+=vx;//移動速度の分だけxを変化させる
  y+=vy;//移動速度の分だけyを変化させる
  update();
}
die();

参考

弾を撃つ
.