[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
岩です。こんばんわorこんにちは。
前回の更新からいろいろいじった結果下からすり抜けて乗れる床を実装できました。
ポイントとなったのはsolid変数でした。
solidはそのオブジェクトがソリッドであるか、ないかをあらわす変数です。
私の作ったプレイヤーキャラはソリッドオブジェクトを通り抜けられないように設定しています。
そこで、キャラが下から触れるとsolid=0(ソリッドでない)に
キャラが上から触れるとsolid=1になるようにしてやりました。
また、上にのっているときに ↓ + ジャンプキーで下にすり抜けられるようにもしました。
これはキャラが上に乗っているときで、且 ↓ + ジャンプキーが押されたときに
solid = 0
となるようにしてやっています。
続きまして敵キャラを一体作ってみました。
その場を動かず、攻撃を受ける状態、受けない状態を交互に繰り返すという、ロックマンのメットール風(というかそのまま)な敵です。
この段階ではダメージを敵に与えられるようには設定しておりませんので、二つの絵を一定時間で切り替える程度の動きしかしておりません。
どのようにしているかといいますと、
まずは変数move_typeというものを用意します。
この変数は敵が今どの動きをする状態にあるかを表すために用意しました。
メットール(仮)の場合ですと
move_typeが0の時はダメージを受けない状態。
1の時はダメージを受ける状態というようにしておきます。
そして、アラームイベントで以下のように設定してやります
if(move_type == 0)
{
alarm[0] = 〇〇 //ダメージを受けないようにしたい時間
move_type += 1;
}
if(move_type == 1)
{
alarm[0] = ×× //ダメージを受けるようにしたい時間
move_type -= 1;
}
これで、二つの状態を切り替え、かつその動きをさせ続ける時間を設定することができるようになります。
そして、プレイヤーキャラ側にコリジョンイベントを追加し、敵に触れるとダメージを受けるようにしました。
さらに、ダメージを受けると後ろに吹っ飛ぶ、という設定も加えました。
まず、変数dspeedを0として生成。
ステップイベントで
if(place_free(x+dspeed,y+vspeed))x+=dspeed;
と設定してやります。
これですと、dspeedは常にかかり続けているわけですが、dspeedが0ですのでなにも起こりません。
そして、敵とのコリジョンイベントで
dspeed = -3 * image_xscale;
vspeed = -4;
というように値を設定してやります。
これでキャラが向いているのと逆の斜め上に吹っ飛びます。
そして、キャラが地面に着地したときにdspeedを0にしてやると動きがしっかりと止まるようになります。
他にもキャラを点滅させたり、吹っ飛び中は操作を受け付けないようにしたりもしました。
なんだか敵を一体作っただけなのに急にゲームらしくなってきた気がします。
次回以降は細かいところを直しつつ、いろんな敵を作っていけたらと思っております。
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城