忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

昨日作った回転砲台の攻撃を追加しました。それと、砲台のデザインが気に入らなかったので、ちょっと変えてみました。
0813.jpg
5方向の針弾と360度に回転しながら撃つ弾の複合攻撃にしています。

5方向の青色針弾は↓のようなスクリプトで発射させています。
*************************************
repeat 5
es_exnew tama,1,499
if tama=-1 : return
ang+
if ang=1 : pang=0
if ang=2 : pang=14
if ang=3 : pang=-14
if ang=4 : pang=28
if ang=5 : pang=-28
es_set tama,ex+56,ey+60,111,1 ;敵弾スプライト設置
es_type tama,32 ;敵弾type値(32)
es_adir tama,pang,400 ;移動方向
es_effect tama,16,16,0,0,pang
ename.tama=3
eh.tama=pang
if ang=5:ang=0
loop
*************************************
これにif gtime¥15=0(フレーム数割る15が0の時)みたいな式をからませて発射タイミングを決めています。

360度に撃ってくるピンク弾は↓こんな感じ
*************************************
es_exnew tama,1,499
if tama=-1 : return
ang1+10
es_set tama,ex+56,ey+60,38,1 ;敵弾スプライト設置
es_type tama,32 ;敵弾type値(32)
es_adir tama,ang1,400 ;移動方向
eh.tama=ang1
ename.tama=1
if ang1=360 : ang1=0
*************************************
弾を撃つ角度を10度づつ増やして発射させています。

しかし、現在でも既に1000行を超えるスクリプトになっているのですが、一つのゲームとして完成したら一体何行のスクリプトに
なってしまうのか今から心配です・・・
やはりタイムテーブルなどは、別のファイルに分けてから読み込んで行くようにした方が良いのかな?と思っています。
PR
攻撃はまだ作っていませんが、回転砲台を追加しました。
0812.jpg
最初はガレッガや鋳薔薇一面に出てくるような、触手?の先に砲台があってグルグル回転する砲台を作りたかったのですが
触手の先に砲台を設置する方法が上手く出来なかったので、こんな感じにしてみました。本体に上に砲台を設置して回転させています。
しかし、地上物はややこしいですね・・・種類を増やせば増やすほどスプライト番号の管理がややこしくなってきます(汗)

後、2〜3敵を追加したら中ボスを作ろうと思ってます^^
自機のスピードをボタン操作で変化出来るようにしようと思って、ボタン同時押しでスピード変更する方法とか、使用ボタン数を増やして
スピード変更とか試してみたのですがどうもしっくりこず、(なるべく使用ボタン数を減らしたいので)
とりあえずボタンを押していない時は勝手に弾を撃ち、ボタンを押した時はスピードダウンするようにしてみました。

で、スピードダウンの時はお約束?の自機の当り判定を表示させるようにしてみました。
08091.jpg
自機を拡大するとこんな感じ↓
08092.jpg
実際の当り判定はもっと小さいですけどね^^;
ついでに、スピードダウンしていない時も敵の弾が自機の近くに来たら勝手に当り判定を表示するようにしました。
ddx=(tx+8)-(px+24)
ddy=(ty+8)-(py+24)
if (abs(ddx)<50)&(abs(ddy)<50):es_set 700,px,py,110
以前書いた当り判定スプリクトを利用して、こんな感じで自機に当り判定を重ねて表示させています。

それと、ボム処理を変更してみました。
08093.jpg
Xを描くように広がっていくようにしてみました。
↓こんな感じのスプリクトを2回繰り返して表示させています。
bombr=bombr+30;ボム回転速度
b=r*bombr;ボム移動距離
bombx=bombk*cos(b)+190
bomby=bombk*sin(b)+220
es_exnew temp,1,499
if temp=-1 : return
es_set temp,bombx,bomby,90; 爆風設置
es_type temp,16 ; 効果type値(16)
es_adir temp,bombr,700;ボム移動方向
es_flag temp,%1000001100011110
if bombr=360 : bombr=0 : bombk+20

あと、画面外に敵がいる時は弾を撃ってこないようにしました。
if (ex>0)&(ex<412)&(ey>0)&(ey<480){敵弾処理}
みたいにして、画面上にいる時だけ弾発射処理を行うようにしました。

これで、大体の処理は出来てきたので敵をもっと増やしていこうと思っているんですが、敵のデザインが大変なんですよね・・・(汗)
今まで、地上物と飛行物の区別はキャラクタ番号で区別していました。
で、今日敵と自機との当り判定処理を追加しようとしたんですが、タイプ値が地上物と飛行物が同じな為に
地上物なのに自機が当ると死んでしまうと言うマヌケな状態に・・・
かといって、地上物の当り判定を0にすると自機弾との判定もなくなってしまうので破壊出来なくなってしまいます。

地上物と飛行物のタイプ値を別々に区別すれば出来るだろうとは思っていたのですが、それをするとなると
スプリクトを相当書き直さなければならず、なんかエエ方法ないもんやろか・・・と色々と考えたのですが
やっぱり良い方法も思い浮かばず、スプリクト書き直しました(汗)

結局、地上物と飛行物のタイプ値を別々にして、当り判定も別々のスプリクトで判定すれば上手く出来ました。
ただ、当り判定のスプリクト自体は同じ処理なので、同じ処理を2回行っているようなものなので
非常に無駄が多い気がするのですが、他に良い方法も思い浮かばないので、とりあえずこれで様子見てみます^^;
暫定のボム処理を追加しました。
0807.jpg
とりあえず、ランダムで爆風を発生させて、その爆風を8方向に動かしているのですが(以前公開したボスサンプルと同じ処理)
どうも、しっくり来ていないのでボム処理のアルゴリズムを考え中です。

ちなみにこんなスプリクトで爆風を動かしてます↓
repeat 8
es_exnew temp,1,499
if temp=-1 : break
es_set temp,rnd(412),rnd(480),90; 爆風設置
es_effect temp,48,48,0,0,0,ESB_ALPHA,180
es_type temp,16 ; 効果type値(16)
es_adir temp,cnt*45,400
es_flag temp,%1000001100011110
loop

出来れば渦を巻くように爆風が広がって行くようにしてみようかな?と思っているんですが、やってみないと感じが掴めないので
色々と考えてます^^;
Twitter
カレンダー
02 2026/03 04
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]