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

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

中ボスの攻撃を追加しました。とりあえず3種類の攻撃を繰り返すようにしています。
第一攻撃は10方向に5発づつ発射角度をずらしながら撃ってきます。
08231.jpg
スクリプトはこんな感じ↓
*************************************
*enemy7tama1;10方向5連射
matu-;弾発射待ち時間をマイナス
if matu>0 : return;待ち時間が1以上ならリターン
ang+;弾の発射角度をプラス
repeat 10
es_exnew tama,1,499
if tama=-1 : return
if ang=1 : pang=-6
if ang=2 : pang=-3
if ang=3 : pang=0
if ang=4 : pang=3
if ang=5 : pang=6
es_set tama,ex+190,ey+72,135,1 ;敵弾スプライト設置
es_type tama,32 ;敵弾type値(32)
es_adir tama,pang+cnt*36,300 ;移動方向
es_effect tama,16,16,0,0,pang+cnt*36;エフェクト方向
ename.tama=2;弾の名前
eh.tama=pang+cnt*36;弾の移動方向(消す時の為)
loop
if ang=5:ang=0:matu=10;5発撃ったら10フレーム待つ
return
*************************************
このスクリプトは右回転で撃つのですが、これと反対のスクリプトを発射時間をずらして発射させています。
最初、「5発撃って待つ」のやり方がわからず色々悩んだ結果、待つ為の変数matuを用意して変数matuが0以上の時は発射しない。
matuが0になったら発射させる事で上手く行きました。

第2攻撃は自機狙いレーザーを5発発射場所を変えて撃ってきます。
08232.jpg
スクリプトはこんな感じ↓
*************************************
*enemy7tama3;レーザー
es_exnew tama,1,249
if tama=-1 : return
if et.enemy=401 : es_ang ex+330,ey+110,px+18,py+18 : pang2=stat;弾の移動方向
es_set tama,ex+330,ey+110,83,1 ;敵弾スプライト設置
es_type tama,32 ;敵弾type値(32)
es_adir tama,pang2,800 ;移動方向
es_effect tama,16,16,0,0,pang2;エフェクト方向
eh.tama=pang2;;弾の移動方向(消す時の為)
ename.tama=1;弾の名前
return
*************************************
これを発射場所と発射時間をずらして、5回発射させています。
これは、弾の発射時に移動方向を決めて、それに続いてレーザー画像を表示させる事でレーザーっぽく見せています。
(実際は短い弾がつらなっているだけ)

第3攻撃は5方向に弾速が違う弾を撃ってきます。良くある最初に撃った弾を後から撃った弾が追い抜かしていくような感じです。
08233.jpg
スクリプトはこんな感じ↓
*************************************
このラベルに来る前にtspeed=0を実行しておく。
*enemy7tama8;5方向追い抜き
tspeed+80;弾の速度をプラス
repeat 5
es_exnew tama,1,499
if tama=-1 : return
ang+;弾の発射角度をプラス
if ang=1 : pang=0
if ang=2 : pang=10
if ang=3 : pang=-10
if ang=4 : pang=20
if ang=5 : pang=-20
es_set tama,ex+150,ey+30,58,1 ;敵弾スプライト設置
es_type tama,32 ;敵弾type値(32)
es_adir tama,pang,tspeed+100 ;移動方向
es_effect tama,16,16,0,0,pang;弾のエフェクト方向
ename.tama=2;弾の名前
eh.tama=pang;弾の移動方向(消す時の為)
if ang=5:ang=0
loop
return
*************************************
これは、es_adirで弾速を設定する時にリピートする度に速度を足していっています。

しかし自分は作っている本人なので、どういう攻撃をしてくるかわかっているので
ついつい難しくなりがちなんですよね・・・
かといって弾の数を減らすと、なんか物足りない感じもしますし、その辺の調整が難しいです。
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
03 2024/04 05
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
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]