$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)を大きくするとより遠くまでブーメランを飛ばすことができるようになります。
|
|
|
|