ウディタARPG(コモンイベント)講座4:敵の攻撃

ウディタも主人公側の攻撃プログラムを行った。

次は敵の攻撃に入る。

 

敵の攻撃NPC

NPC

敵の情報については並列実行常時にしておこう。

初めにV変数で無敵時間を出している。
別のコモンイベント(敵の個別情報)にも影響を与えるため、
コモンセルフでなくシステム変数でやるべき。

無敵時間が1以上=1秒以上あるときにイベント中断を行い、
敵の攻撃を一切受け付けない状態にさせる。

続いて普通にやるとメニューを開いているときも敵は攻撃を行う

メニューを開いているときは攻撃させないよう、
Sys変数の13番から0と同じ(イベント実行していない)を選ぶ。

イベント実行していないとき(=0)、
敵は主人公に攻撃できるプログラムを作っていく。

コモンイベント「あたり判定」をコピーして貼り付けるか、
ID番号と回数付きループ及び敵HPとマップID、影グラフィック番号をつける。

初めに影グラフィック番号が2以上は敵としてみなし、
0と1はアイテムなので「何もしない」よう分岐を行う。

影グラを設定しないとアイテムですら「敵」とみなされ消えるからね。

真ん中には敵HPのほか、主人公と敵の距離差をとり、
ある程度の距離以下だったらBGSを鳴らすようにしている。

私はバイオハザードだけでなくサイレントヒル(コナミ)も影響を受けている。
サイレントヒルといえば鉄パイプにラジオ、ライトだ。

ラジオの役割として私はラジオが鳴る演出をつけた。
いらないなら距離差は省いていいが敵HPだけは設定しておこう。

続いて攻撃ウェイトと無敵時間の二つに入る。

攻撃ウェイトとは敵が一度攻撃してから次の攻撃をとるまでにかかる時間であり、
ウェイトが0以下(というか0)になったら攻撃処理を行う。

攻撃ウェイトは0か上記以外で分岐を行おう。

ちなみに攻撃ウェイト及び無敵時間をはずして分岐を行うと、
敵は連続攻撃ができるようになるため、より難しくさせるなら外すのもありだ。

攻撃ウェイトも無敵時間も0になったとき、敵は攻撃できる。

マップイベント

攻撃する際、敵IDにそって攻撃処理を分担させる。
敵IDは上記画面右側にある「可変DB書込:ID番号」に数字を入れる。

k編DBから

可変DBにきちんとIDを作っておこう。
ID振り分け一覧はメモ帳よりユーザーDB一覧を見ると分かりやすい。。

敵ID2

上記は可変DBだけど赤く囲んだころ=IDとみればいいだけだ。

ID振り分けによって、個別の敵IDと数字が一致したらそれぞれに分ける。
敵攻撃例は下記に詳しく記すとして、敵から攻撃を受けたか、
攻撃処理を行ったら攻撃ウェイトを加算する。

FPS

敵IDによる振り分けを終えた後に敵攻撃ウェイト時間を足す。
私は固定時間60フレームと可変時間乱数を設けている

秒数についてゲーム基本設定で30fpsを選ぶと1秒=30フレームになり、
60fpsを選ぶと1秒=60フレームとなる。

私の場合は1秒+乱数だけ攻撃ウェイトが置かれるのね。

攻撃ウェイトが加算されたので「上記以外」に入り1フレームずつ減っていく
並列実行常時は上から下まで向い、最下にたどり着いたら上に戻る

最後に敵HPが0になる=一つのエリアにすべて敵がいなくなるとラジオ音を止める。

 

敵の攻撃例

スライム

敵の攻撃は敵にプログラムを置く場合と、マップに仕掛けを置く場合に分ける。

主人公にとっての敵は「敵ID」だけでなくマップ上に仕組まれた罠でもある。
マップ上の罠については、各自工夫して作ってもらえばいい。

例えばあるマップを踏んだら地雷が発動する、飛ばされる、
離れていたはずの敵が目の前にいるなどだ。

プログラムで作る場合は乱数を調整して確率を作り、
ある数字を越えた場合に罠を発動させる。

後は主人公のあたり判定とほぼ同じやり方でいい。
上記ツイートに貼り付けた動画が罠づくりの参考になるよ。

付け加える部分として攻撃を受けた場合、
主人公を一定時間無敵にさせて攻撃をうけつけないところだ。

V2-7:無敵時間と設けて60を代入している。
先ほどNPCで無敵時間が0以上なので60は減っていく。

0に減るまでは敵の攻撃を受け付けないよ。

もちろん無敵時間という条件分岐から外れるプログラムを使えば、
無敵なんて関係なく攻撃される
ようになるよ。

敵の攻撃は考えるだけで楽しいのだけど、
やりすぎると難易度がぐっと跳ね上がるので、気をつけてほしい。

 

基本は以上!

おなげき

以上でARPGプログラミング講座-敵の攻撃と主人公の攻撃-を終える
基本であり少しずつ改変していくといい。

また新しい情報が入ったら、新しい記事として加えていくよ。

ぐちゃぐちゃになりすぎて困ったらまた戻ってくればいい。
わかりにくいところもあるだろうけれど、
自分なりにあれこれ試行錯誤をこなし、世界観を形作ってほしい。

ちなみに私はゲームで表現したい世界の一部を先に絵で描き、
後でプログラミングとして舞台を作り敵を設定していった。

ゲームを作るほど「こうしたい、ああしたい」が出てくるので、
絶対忘れないように文でも絵でもいいからメモを取っておこう。

私のインスタストーリーではウディタによるプログラミングについても載せている。
というか載せていこうと思っている。

インスタ:こちらから見てね。

他にもプログラミングで悩んだらほかの人のやり方を見るか、
市販のプログラミング教材を読むなどして、独自の世界を作っていこう。

お願い

めがびちゃんからお知らせ♪

お知らせ

megabe-0へ訪問した"本当"の理由

まさか記事の書き形一つでこうなるとは…

お願い1

Writer軽い自己紹介

ティラノスクリプトや小説家になろう、ピクシブ他で物語を書きながら、 「私が気になった事件」の裏側を作家の視点で書いているおっさん。

プロフィール画像は自画像でなく、Megabe-0ブログのマスコット、めがびちゃん。

 

雷が苦手で、光を見ると頭が固まる(元から固い)。 月初めは墓参りと神社参拝を行い、賽銭箱へ1万円を入れた際、とても気持ちがすっきりした。

 

■ 簡単な自分史 ■

0歳:釧路のある病院で生まれる。暇さえあれば母乳を吸って、ご飯を4膳食べても体重が落ちるほど、母のダイエットにものすごく貢献したらしい

 

3歳:行方不明になり、全裸で海を泳ごうとしたところ、いとこのお姉さんに発見され、この世へ留まる

 

8歳:自分のお金でおもちゃのカードを初めて買い、経済を知る。なぜか父親に怒られ、家出するがすぐに見つかる。

 

12歳:学校で給食委員長になる。委員長として初めて全校生徒の前にて演説する際、原稿用紙を忘れてアドリブで笑いを誘いながらも何とかやり過ごし、多くの生徒に名前と顔を覚えてもらう。また、運動会の騎馬戦では変なアドリブを行い、多くの笑いを誘った。

 

18歳:初めて好きな人ができたけれど、告白が恥ずかしくてついにできず、別れたことを今でも根に持っている(妻となる人にははっきり言えてよかった)

 

21歳:大学在学中、アルバイトを始める。人手不足かつとても忙しい日々を過ごしながら「どうせなら自分から楽しいことをしていきたいなあ⇒起業って選択肢があるのか」働き方の選択肢を見つける

 

27歳:自分で作った会社がうまくいかず、一度たたんで都落ち。実家でとことん自分を責める日が続く。「何をやっても駄目だな、お前は」など。自分を責めても自殺ができず、体中から毒素があふれ出て苦しい日々を送る。寝るのも怖かった日々。

 

28歳:「このままじゃいけない」決心を決め、小学校からの勉強をやり直す。高校の勉強で躓きながらも、学び直すうちに「自分は何もわかっていなかったんだなあ」大切な教えに気づかされる。 加えて、小説やイラストなど「今までの自分が手を出さなかった分野」に手を伸ばしてみた。

 

29歳:「定義」と「自己肯定」こそが生き方を決めると気づかされ、不安な日々が起きても、心が強くなったと感じる。でも子供の誘惑にはめっぽう弱くなる。

 

35歳:人生初の交通事故(物損)に出会う。冬道の運転で車を上下に大回転(スピンではない)を体型氏、何とか命を取り留め、なぜ生きているのかわからない状態に陥る。

自分の生き方はすべて自分が握っている。わずかな瞬間にしか現れない「自分の真実」を表に引きずり出し、ピンチからチャンスを生み出す発想や視点をブログやメルマガ他で提供中。