モンスターがアイテムをランダムにドロップする

前回は、モンスターにマシンガンをドロップさせてプレイヤーそれに触れるとマシンガンが有効になるという仕組みを作ってみました。

ですが、以下の問題がありました。

  • あらかじめマシンガンを持っているモンスターを決めなければいけない
  • 自動でスポーンするモンスターにアイテムを持たせることができない
  • 複数個レイアウト上にあったり、何度も取得したときの対応の難しさ

ということで、今回はマシンガンがランダムで出現する仕組みを作ります。そして、複数回取得しても状態が変わらないようにしてみましょう。

まだゴーストシューターを作っていない、という方はこちらの記事を参考に制作を進めてください。

メンタルハックWEB
Construct 3 の基本操作を学ぶ(1)~画面の見方と背景の設置 | メンタルハックWEB この記事では、Construct 3 のビギナーズガイドを参照しながら、ゴーストシューターという簡単なゲームを一緒に作っていきます。 https://www.construct.net/en/tutorials/...

ベースとなるゴーストシューター完全版は以下です。

あわせて読みたい
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

インスタンス変数にランダムの値を付与する

これからやることなんですが、「モンスターが死んだときにランダムで1~100の数字を”モンスターのインスタンス変数”にセットする」というものです。

ということでまずはモンスターに新しいインスタンス変数 Drop を作って初期値を 0 にしてください。そして以下のイベントを作ります。

条件:Monster → On destroyed

アクション:Monster → Set value → Drop (number)random(1,100)

これでモンスターが死んだときに、Drop 内の数値が1から100のいずれかに設定されるはずです。

変数の値でドロップアイテムを決める

さて、Drop の値が1~100の間でランダムで生成されるようになりました。この値を利用してアイテムのドロップの確率を変えることが可能です。

たとえば Drop ≦ 100 とした場合、すべてのケースになりドロップ率は100%となります。Drop ≦ 20 とした場合、ドロップ率は20%ということになります。いろいろ数値を変えて試してみてください。

先ほどの条件にさらに sub condition として以下の条件とアクションを加えます。

条件:Monster → Compare instance variable → Drop (number)≦ Less or equal10 (任意の値でOK)

アクション:Monster → Spawn another object → MachineGun (他はデフォルト)

これでアイテムのランダムドロップは完成したと思いますが、ドロップしたマシンガンが死んだときのモンスターと同じ向きになってしまっていると思います。これを直すアクションを追加します。

以下のアクションを追加してください。

アクション:MachineGun → Set angle → 0

出現したマシンガンの向きがちゃんと直っていると思います。ここで一度プレビューで確認をしてみてください。

この  Set angle → 0 のアクションは何度も使うことになるので覚えておきましょう。オブジェクトの向きを固定できます。

マシンガンを入手したときに変数に数値を加える

次はマシンガンの有効化(要するにプレイヤーがマシンガンを入手したときに連射が可能になる仕組み)をしていきましょう。

まずは一つ MachineGunNum というグローバル変数を作ります。初期値は 0 にしておきましょう。

もちろん変数の名前はなんでもOKです。わかりやすい名前にしてください。

そして次に、プレイヤーがマシンガンを取得するイベントを作ります。取得と同時に、先ほど作った MachineGunNum にを加えます。

条件:Player → On collision with another object → MachineGun

アクション1:MachineGun → Destroy

アクション2:System → Add to → MachineGunNum1

このイベントで、マシンガンを取るたびに MachineGunNum に 1 が加えられていくことになります。このあと何をするか、もう想像は付いていると思いますが、念のため説明していきます。

変数が1以上の状態でマシンガンが有効に

以前の投稿で作ったマシンガンに、一つ条件を上乗せしましょう。

条件:System → Compare variable → MachineGunNum≧ Greater than equal1

これのサブコンディションとして前回のマシンガンのイベントを入れてあげます。見た目はこんな感じになっているはずです。

言葉で説明すると「マシンガンを取った個数が1以上の時に、マウスを押し続けると0.1秒ごとに弾丸が生成される」ということになります。

これで、レイアウト上にマシンガンがたくさん発生して、たくさん入手したとしても、効果の活動は一度だけ、ということになりましたね。

次回は、今回の方法を利用してほかのアイテムをドロップさせ効果を発動させてみましょう。

メンタルハックWEB
残機のカウントと表示、1UPのイベントをつくる | メンタルハックWEB 前回は当たり判定の調整と点滅無敵状態の作り方について説明をしました。今回はその続きで残機のカウントと表示、そして1UPイベントも作ってみましょう。 まだゴーストシ...
Menu