Construct 3 の基本操作を学ぶ(8)~二つの値を比較する

前回まで、見下ろし型のシューティングゲーム、ゴーストシューターの制作をしてきました。ですが完成版とはちょっと違っているのでさらに機能を追加していきましょう。

※この記事では、Construct 3 のビギナーズガイドを参照しながら、ゴーストシューターという簡単なゲームを一緒に作っていきます。

あわせて読みたい
Beginner's guide to Construct 3 ★★★★★ Thanks for choosing Construct 3! Let's get started making your first game. We'll be making the Ghost Shooter demo game. You'll learn everything you need to know...

完成版はこちらで確認が可能です。

あわせて読みたい
Construct 3 r388.2 ★★★★★ Launch Construct 3 r388.2. Make games with the world's easiest browser-based game creator. Try for free now and begin your game development journey.
Menu

プレイヤーに近づくと敵が向きを変える

考え方としては「敵 ( Monster ) とプレイヤー ( Player ) の距離が一定以下になったときに、敵をプレイヤーの方向に回転させる」といった感じです。

このように新しいイベントを作る際には、条件とアクションをまずは文章でもよいので紙などに書き出すとわかりやすいと思います。

条件1:system → For each Monster

条件2:system → compare two values → distance(Player.X, Player.Y, Monster.X, Monster.Y) < less than 200

条件を追加するときは、最初の条件の上にマウスポインタを移動させ 右クリック → Add another condition を選択します。

For each はオブジェクトの各インスタンスに対して1回ずつアクションを繰り返す、というコマンドで、distance は二つの座標をコンマを挟んで順番に記載し距離を算出します。その距離が200以下になったときに、という条件です。

さて条件はできたので、次に敵がプレイヤーの方を向くようなアクションをつけてあげましょう。

アクション:Monster → Rotate toward position → 1 Player.X Player.Y 

Rotate toward position は指定した座標に向けてオブジェクトを回転させるコマンドで、1度( degrees1 )ずつプレイヤーのXY座標に向くようにしてあげました。

これで一連のイベントは完成です。以下のようになっているはずです。

ここで一度、プレビューで確認してみましょう。敵が近づいてきたら急にこちらを向くようになったと思います。

試しに先ほどの degrees を10にセットしてみてください。敵の回転がものすごく早くなったと思います。

徐々に敵のスピードを速くする

ずっと敵が同じスピードだと延々とゲームが続いてしまい、スコアを競う要素がなくなってしまうので少しずつ敵のスピードが増していく仕組みを作ってみましょう。

実装の流れは以下になります。

  • グローバル変数を作る (MonsterSpeed=80)
  • モンスターの Bullet ビヘイビアのスピードに MonsterSpeed を設定する
  • 弾がモンスターに当たると MonsterSpeed に 1 を加える

グローバル変数の作り方がわからない方はこちらでご確認ください。

作ったグローバル変数をモンスターのビヘイビアである Bullet の speed に入れるイベントを作ります。

※注意ー Bullet はモンスターのビヘイビアであり、オブジェクトの弾丸ではありません。

speed には初期値として 80 が設定されていますが、これを変数に置き換えてあげる、ということになりますね。

すでにある条件( Every 3 seconds )のアクションとしてそれを設定してみましょう。

アクション:Monster → Set speed ( Bullet 項目内 ) → MonsterSpeed

これで3秒ごとにモンスターのスピードが更新されていきます。次に最後の項目、弾がモンスターに当たったときに MonsterSpeed に 1 を加えるイベントを作りましょう。

条件はすでにある ( Bullet → on collision with Monster ) を使いましょう。そのアクションとして以下を作ってください。

アクション:System → Add to ( global & local variables 項目内 ) → MonsterSpeed 1 

これで弾が命中した分だけモンスターのスピードが上がっていくはずです。ですが3秒ごとに更新されるので、急激には上がりません。

もっとゲームを難しくしたい場合、Monster → Set speed → MonsterSpeed を Every tick の条件下にドラグ&ドロップしてください。これで常に値が更新されるので、リアルタイムで敵の動きが早くなるはずです。

速い敵を倒すと高得点がもらえるようにしたい

これは容易に想像ができると思います。

モンスターが死んだときの、そのモンスターの Bullet Movement の Speed がそのままスコア( グローバル変数の Score )になれば、素早い敵を倒したときに高得点がもらえる仕組みになってくれます。

モンスターが死んだときという条件 ( Monster  health ≦ 0 ) に新たなアクションを加えます。

アクション:System → Add to ( Global & local variables 項目内 ) Score, Monster.Movement.Speed

この value 欄にかいた Monster.Bullet.Speed という文字はそれぞれ、オブジェクト名(緑)、ビヘイビア名(黄)、項目名(赤)となっています。このようにプロパティ内の各要素までアプローチすることができるんですね。

これで、倒したモンスターのスピードがそのまま Score として加算され HUD に表示されるはずです。

今回追加した機能は以下になります。

  • 敵がプレイヤーに向かってくる
  • 敵のスピードが徐々に上がる
  • 速い敵は高得点にする

次回は制作を一休みして、プロジェクトの保存と再開について説明していきます。

メンタルハックWEB
Construct 3 の基本操作を学ぶ(9)~プロジェクトの保存と再開 | メンタルハックWEB せっかく苦労して時間をかけて制作したゲームのデータが消えてしまったら...考えただけでもぞっとします。 セーブの仕組みを理解して、そんなリスクを減らしましょう。...
Menu