[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
最近気づいたこと
余らせずにボムを使い切るのって難しい
かなり放置していた気もします。
制作は行ったり戻ったりでなかなか前進しません。
仕様をカッチリ固めてからでないと後からのやり直しがキツイってことでしょうがない事なんでしょうが・・・
今回はショット関連を見なおしました。
大抵のシューティングというのはショットボタン(ここでは”Z”キー)を押したときに
一度に何発かのショットが列ごとにまとめて出るようです。
ということでこの仕様を取り入れたいと思います。
ここでは1列に5発のショットが出るようにします。
まず、ZキーのPressイベントに「shot_flag」という変数に1を代入。
shot_flag=1のときにショットの発射イベントが起こるよう
処理をSTEPイベントに記述します。
ソースは以下の通り
bullet_num = (shoot_level * 2) - 1;//ショットの行数をショットのレベルから算出
if(shoot_flag == 1 && count <= 25)
{
count += 1;//経過ステップ数を数える
if(count mod 5 == 0)
{
bullet_id[0,count/5]=instance_create(x,y-15,bullet_kind);
bullet_id[0,count/5].vspeed = bullet_id[0,count/5].spd*(-1);
for(i=1;i<=floor(bullet_num/2);i+=1)
{
bullet_id[i,count/5]=instance_create(x-9*i,y-15+(i*5),bullet_kind);
bullet_id[i,count/5].vspeed = bullet_id[i,count/5].spd*(-1);
bullet_id[i+floor(bullet_num/2),count/5]=instance_create(x+9*i,y-15+(i*5),bullet_kind);
bullet_id[i+floor(bullet_num/2),count/5].vspeed = bullet_id[i+floor(bullet_num/2),count/5].spd*(-1);
}
}
}
else if(count > 25)
{
shoot_flag = 0;
count = 0;
}
ここでは25ステップですので5発のショットが1行に発射されるようになります。
また、ショットレベルが一つ上がるごとに二列ショットが撃てるようにもなっています。
レベル最大時のショット
次こそはオート連射とビットからのショットを実装したいなあと考えております。
そんなわけで、最初の投稿からだいぶ間が空いてしまったわけですが、制作は細々と続いております。
前回作った自機の移動関連を少々訂正しました。
自機の移動にはキーイベントを使いました。
左右のキーが押されるとhspeed(水平方向の速度)が変化
上下のキーが押されるとvspeed(垂直方向の速度)が変化
キーが離されるとスピード0というような処理にしたわけですが、
上+右のように斜め移動をしようとすると上下左右の移動よりやや早くなってしまします。
vspeedとhspeedが同時にあたえられることで斜め移動となっているわけですが、
speed=ルート(vspeed+hspeed)
となるためにやや速くなってしまうわけです。
ということで、vspeedとhspeedが同時に与えられている時、自機のスピードを一定に保つよう
STEPイベントに以下のようなコードを追加しました。
if((abs(hspeed) > 0 || abs(vspeed) > 0) )
{
speed = abs(spd);
}
abs(x)はxの絶対値を求める関数です。
移動関連は一応出来たので、弾を撃てるようにしました。
キーイベントにZキーを押したときに弾のインスタンスを生成するようにコードを書きます。
ただ、これだけですと弾は飛んで行かないので、弾のオブジェクトに垂直方向の速度を設定してやります。
まあ、この辺に関しては解説サイト等でも触れられてますので簡単でした。
次にオプションを追加しました。
オプションは自機の左右に位置し、自機の動きに合わせて動きます。
今のところ弾は撃ちませんが、後々追加していこうかと・・・
本日の成果
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城