トップページへ
 攻撃パターン
・ブーメラン   | 利用規約 | 使い方 | 操作方法 |
■説明
弧を描いて発射地点に戻ってきます。敵を貫通して攻撃することができ、最大3個まで同時に投げることができます。
■参考
攻撃とダメージ処理 - 自機の攻撃動作
攻撃パターン - 弓矢
■解説
  $Effectクラス(一部)
if (p=="throw"){
  p=$pat_arm+0;
  f=$Mychar.f;
  zOrder=4;
  count=0;
  for (e in $chars){
    if (e is Weapon_My && e.p==$pat_weapon+1) count++;
  }
  if (count>=3) {
    $Mychar.onAttack=0;
    die();
  }
  for (i=0; i<120; i+=20) {
    angle=i*f-(90*f);
    x=$Mychar.x+sin(i*f)*8;
    y=$Mychar.y-cos(i*f)*8+2;
    update();
  }
  $Mychar.onAttack=0;
  appear(new Weapon_My(x,y,"boomerang"));
  for (_time=0;_time<5;_time++){
    x=$Mychar.x+sin(i*f)*8;
    y=$Mychar.y-cos(i*f)*8+2;
    update();
  }
}


for (e in $chars)・・・の部分では画面に表示されているブーメランの個数を数えています。ブーメランの個数が3個より多ければ処理を行いません。この後に腕を振るアニメーションを行い、ブーメランを出現させます。

  $Weapon_Myクラス(一部)
if (p=="boomerang"){
  p=$pat_weapon+1;
  f=$Mychar.f;
  zOrder=3;
  ATC=4;
  angle=90*f;
  x=$Mychar.x;
  y=$Mychar.y-10;
  $Mychar.onAttack=0;
  for (i=0;i<60;i++){
    angle=angle+f*20;
    vx=cos(i*3)*f*10;
    vy=sin(i*3)*0.5;
    x+=vx;
    y+=vy;
    if ($map.getAt(x,y)>=$pat_block+20 && $map.getAt(x,y)
                          <=$pat_block+39) die();
    update();
  }
}

x,yに、自機の座標を出発点として与えます。その後のfor文で、ブーメランを回転させながら、長細い楕円運動をさせています。vx=cos(i*3)*f*10について、vxの掛け算の値(ここでは10)を大きくするとより遠くまでブーメランを飛ばすことができるようになります。




|  トップページ | このサイトについて | 利用規約 | ご意見・お問い合わせ |

TonyuアクションRPG - ゲームプログラミング解説 -