Hako.png(402 byte) 武器をつくってみる その1

アクションゲームでは、敵と戦ったりする際に、プレイヤーに武器を
持たせますね。
今回の講座では、プレイヤーキャラクターに銃を持たせ、弾を発射
できるようにしてみましょう。

本講座では、「集団移動」機能がキーワードとなります。

注意
このページ以前の講座で解説済みの、オブジェクトやアニメーションの作り方といった、
オブジェクトの作成に関する基礎的な解説は割愛します。
適宜ヘルプファイルやチュートリアル、これ以前の講座を参照してください。

もくじ

  1. ステップ1:武器の画像を登録する
  2. ステップ2:武器オブジェクトを作成する
  3. ステップ3:集団移動をつかって武器を装備
  4. ステップ4:アニメーション切り替え処理をつける
  5. ステップ5:弾オブジェクトをつくる
  6. ステップ6:銃から弾を発射させる


ステップ1:武器の画像を登録する

Floppy.png(261 byte)サンプル画像
objtut02_02.png(1114 byte)
持たせる銃の画像を用意し、プロジェクトに登録します。
自分で用意した画像を使ってもいいですが、てっとり早く試してみたい方は
右の画像をご使用ください。
右の画像は、ステージデザイナーに同梱されている主人公オブジェクトに
合うように書かれた銃の絵です。
保存方法はブラウザによって異なりますが、画像上を右クリックして
「対象をファイルに保存」に相当するメニューをクリックします。

ワンポイント
画像には、プレイヤーキャラクターが右を向いたときのの絵と、左を向いたときの絵が
必要です。


注意
アニメーション用画像を作成する際、1フレーム(アニメーションの1コマ分)の大きさは、作成する
オブジェクトの大きさと合わせましょう。
サンプル画像を使用する場合は、1フレームの大きさが縦8px, 横16pxですので、オブジェクトの
大きさはこの値に合わせて作成します。


ステップ2:オブジェクトを作成する

まずは、銃のオブジェクトをつくります。
名称を適当に設定し、オブジェクトの大きさをアニメーション画像の1フレーム分の大きさと
同じになるように設定しましょう。
(サンプル画像を使用した場合は、幅16、高さ8と設定すればよいです。)

つぎに、銃口が右を向いているときのアニメーションと、左を向いているときのアニメーションを
作成します。
(アニメーションの作成方法については、ヘルプのほか、チュートリアルなどでも解説されています。)


ステップ3:集団移動をつかって武器を装備

つづいて、「集団移動」を使うためにイベントを編集します。

集団移動とは?
集団移動とは、配置オブジェクト同士の位置関係を保持するための機能です。
ある配置オブジェクトを親とし、ほかの配置オブジェクトを子と設定することで、
親の移動に合わせて子が移動するようになります。

集団移動が有効な間は、イベントコマンド等を使って子が勝手に移動することは
できません。

そのまえに、プレイヤーキャラクターを共有データベースに登録しておきます。
(イベントコマンドでプレイヤーを設定する際には、データアイテムを用いるからです。)

もし、ステージデザイナー同梱の「基本オブジェクトパッケージ」に入っている「主人公」に
武器を持たせる場合は、すでに共有データベースにプレイヤーキャラクターが設定されているので
(ここから)から(ここまで)までの操作は不要です。

======(ここから)======


まず、共有データベースの好きな場所にデータアイテム種別を「配置オブジェクト」として
データアイテムをつくります。

この際にプレイヤーを設定してもいいですが、後々のことを考えて以下のように設定してみましょう。
まず、プレイヤーオブジェクトの「配置オブジェクト発生時」イベントコマンドの任意の行に以下の
イベントコマンドを追加してください。

コマンド1:データアイテム登録イベント
- 指定配置オブジェクトをデータアイテムに代入
設定するイベントパラメータ:
パラメータ名称 設定する値
代入する配置オブジェクト 自分自身
代入先データアイテム 共有データベース内に作成したデータアイテムを設定します。
データベース操作

このようにすることで、プレイヤー配置オブジェクトが動作を開始すると同時に、先ほど作成した
共有データベース内のデータアイテムに自身を登録します。
イベントから設定する理由
データアイテム編集画面から設定する場合、配置オブジェクトが存在するマップも設定
しなければいけないため、プレイヤー配置オブジェクトは必ずそのマップから動作を
開始しないと、正しくデータアイテムに配置オブジェクトが設定されません。
これは、「配置オブジェクトデータアイテム」へ配置オブジェクトが設定されるタイミングが、
配置オブジェクトが存在するマップが読み込まれたときであるためです。

しかし、イベントを用いて設定することで、どのマップにいても確実にデータアイテムに
自身の配置オブジェクトを設定することができるようになります。
(くわしくは配置オブジェクトデータアイテムについてを参照してください。)

======(ここまで)======



つづいて、イベント開始条件「配置オブジェクト発生時」を編集します。

画像1:イベントデータベース編集

(クリックで拡大)

イベントデータベースを編集します。以下の名称でデータアイテムを作成します。
データアイテムの種別は「整数値」です。
(値の編集は不要です。)

  • 配置位置X
  • 配置位置Y
  • プレイヤー位置X
  • プレイヤー位置Y

(データアイテム追加の方法がわからない場合は、画像1と以下の手順を参考にしてください。)
  1. まずは画像1の@部分で名称を設定します。
  2. A部分で作成するデータアイテムの種別(今回は整数値)を設定します。
  3. B部分の「データを追加」ボタンを押します。
  4. この手順ですべてのデータアイテムを追加します。

それでは、以下のようにイベントを作成していきます。ただし、「プログラム計算」と書いてある
行に関しては、以下に編集方法を説明します。

コマンド2:武器をプレイヤーに装備する
配置オブジェクトの各種値をデータベースに代入
設定するイベントパラメータ:
パラメータ名称 設定する値
代入対象オブジェクト値 X位置
代入先データアイテム イベントデータベース内の「プレイヤー位置X」データアイテム
代入対象オブジェクト 共有データベース内のプレイヤーが格納されている配置オブジェクトデータアイテム
データベース操作
配置オブジェクトの各種値をデータベースに代入
設定するイベントパラメータ:
パラメータ名称 設定する値
代入対象オブジェクト値 Y位置
代入先データアイテム イベントデータベース内の「プレイヤー位置Y」データアイテム
代入対象オブジェクト 共有データベース内のプレイヤーが格納されている配置オブジェクトデータアイテム
データベース操作
プログラム計算(「配置位置X」=「プレイヤー位置X」+0)
設定するイベントパラメータ:
代入先データアイテムをイベントデータベース内の「配置位置X」とし、 計算式を、「プレイヤー位置X(データアイテム)」+ 0 とする。
プログラム計算ボタンから
プログラム計算(「配置位置Y」=「プレイヤー位置Y」+20)
設定するイベントパラメータ:
代入先データアイテムをイベントデータベース内の「配置位置X」とし、 計算式を、「プレイヤー位置X(データアイテム)」+ 0 とする。
プログラム計算ボタンから
配置オブジェクトの配置位置を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
(X値の参照データアイテム) イベントデータベース内の「配置位置X」データアイテムを設定
(Y値の参照データアイテム) イベントデータベース内の「配置位置Y」データアイテムを設定
操作対象配置オブジェクト 自分自身
オブジェクト→位置指定
配置オブジェクト自身によって移動するのを許可/禁止する
設定するイベントパラメータ:
パラメータ名称 設定する値
自身で移動することを制限しない いいえ
操作対象配置オブジェクト 自分自身
オブジェクト→速度・モーション・重力系
集団移動する配置オブジェクトを追加する
設定するイベントパラメータ:
パラメータ名称 設定する値
親配置オブジェクト 共有データベース内のプレイヤーが格納されている配置オブジェクトデータアイテム
子配置オブジェクト 自分自身
オブジェクト→速度・モーション・重力系

 プログラム計算について

プログラム計算は、記述した計算式に基づいて計算を行い、結果をデータアイテムに代入することが
できるイベントコマンドです。 (ヘルプファイル内「プログラム計算」にも記事があります。)

この機能をつかって、武器の配置座標を設定します。

上図は、プレイヤーとしてステージデザイナー同梱の「基本オブジェクトパッケージ」内にある「主人公」
オブジェクトを用い、武器としてサンプル画像を用いた際の、プレイヤーと武器の位置関係です。
武器のX軸方向の位置はプレイヤー位置と同じ、Y軸方向の位置はプレイヤー位置から20[px]だけ
足した位置になります。

この位置に銃を配置するには、まずプレイヤーのX,Y座標を取得し、この座標からずらす分を足す
(もしくはひく)ことで、銃の位置を決定する必要があります。

プレイヤーの座標は上記イベントの行番号0と1によって、イベントデータベース内の
「プレイヤー位置X」、「プレイヤー位置Y」に代入されているので、これを利用して
イベントデータベース内「配置位置X」「配置位置Y」データアイテムに計算した座標を
代入することを考えます。

それでは、プログラム計算をつかってイベントコマンドを配置していきましょう。


画像2:プログラム計算を起動

(クリックで拡大)

まずは、上図に示す「プログラム計算」ボタンを押します。

画像3:プログラム計算編集画面

(クリックで拡大)

すると、上図のような編集画面が現れます。 まずは、先ほどのイベント内の、行番号2に示すイベントコマンドを作成します。
編集を以下の手順で行います。
  1. 上図@部分を押し、計算結果代入先をイベントデータベース内「配置位置X」データアイテムに設定します。
  2. 上図A部分を押し、イベントデータベース内「プレイヤー位置X」データアイテムを設定します。
    このあと、B部分に文字が追加されていることを確認します。
  3. 上図B部分を参考に、数式を作成します。数式の
    [0,プレイヤー位置X] + 0 ←この0は、必要に応じて任意の値(配置座標)に変更します。

この計算式は、「プレイヤー位置X」に0を足したものを「配置位置X」に代入するという意味になります。
これでX軸方向の武器の位置を決定できました。

同様の手順で、「配置位置Y」にも座標の計算結果を代入設定してみましょう。
(手順を以下に示しておきます。)
  1. 上図@部分を押し、計算結果代入先をイベントデータベース内「配置位置Y」データアイテムに設定します。
  2. 上図A部分を押し、イベントデータベース内「プレイヤー位置Y」データアイテムを設定します。
    このあと、B部分に文字が追加されていることを確認します。
  3. 上図B部分を参考に、数式を作成します。数式の
    [0,プレイヤー位置Y] + 20 ←この20は、必要に応じて任意の値(配置座標)に変更します。

ワンポイント
イベントコマンドを並べ替えたいときは、対象のイベントコマンドを選択した後、編集画面内の
並べ替えボタン(yaziue.ico(1406 byte)yazishita.ico(1406 byte))を押します。


行番号5,6では今回の講座の重要点である「集団移動」機能を設定しています。
まず、行番号5にて、銃が自分勝手に移動できないように設定した後、行番号6にて
プレイヤー配置オブジェクトを親、自分自身(この場合は銃)を子とすることで、プレイヤーと銃の
位置関係を保つように設定しています。


ワンポイント
イベントコマンド「集団移動する配置オブジェクトを追加する」を複数使うことで、
子配置オブジェクトを増やすことができます。

例:
集団移動する配置オブジェクトを追加する
設定するイベントパラメータ:
パラメータ名称 設定する値
親配置オブジェクト 親として設定する配置オブジェクト
子配置オブジェクト 任意のオブジェクト1
オブジェクト→速度・モーション・重力系
集団移動する配置オブジェクトを追加する
設定するイベントパラメータ:
パラメータ名称 設定する値
親配置オブジェクト 親として設定する配置オブジェクト
子配置オブジェクト 任意のオブジェクト2
オブジェクト→速度・モーション・重力系

こうすることで、1つの親に対して2つ以上の子を持たせることもできます。

集団移動を解除したい場合は、「集団移動をすべて解除する」イベントコマンドを用い、
イベントパラメータにて親配置オブジェクトを設定します。


ここまで作成できたら、マップ上にプレイヤーと銃を配置します。
画像4:オブジェクト配置

(クリックで拡大)

このとき、上図@部分のリストの並びに注意します。
銃配置オブジェクトよりもプレイヤー配置オブジェクトが上になるように設定してください。
これは、配置オブジェクトが同じレイヤーに存在する場合は、このリストの並び順に描画が実行
されるためです。
もし、このリスト内の位置関係が逆になると、銃が描画されてからプレイヤーが描画されることに
なるので、プレイヤーによって銃が隠れてしまうことになります。

ワンポイント
次回リリースされる予定のステージデザイナーには、配置オブジェクトが同レイヤーに
存在する場合の描画順をより明示的に設定できる機能を搭載予定です。ご期待ください。



ここまでできたら、いったんゲームを実行してみましょう。
プレイヤーと銃がともに移動することが確認できたら成功です。


ステップ4:アニメーション切り替え処理をつける

つづいて、プレイヤーの向いている方向に合わせて、武器のアニメーションを変更するイベントを
組んでいきます。
(プレイヤーの向きにあわせて銃口の向きも変えたいですよね。)

銃オブジェクトのイベント開始条件「いずれかのキーが押下されたとき」を以下のように編集します。

コマンド3:キー操作イベント(アニメーション変更)
条件分岐
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで右キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が右を向いているアニメーションを設定します。
オブジェクト→表示
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで左キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が左を向いているアニメーションを設定します。
オブジェクト→表示
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット

これで、プレイヤーの向きに合わせて銃口を向く方向も変えることができました。
作成したイベントについて
「いずれかのキーが押されたとき」イベント開始条件内のイベントコマンドには、
「直列実行モード」を設定しましょう。
設定方法は、下図のように、緑枠部分に示す行番号右側の空白部分をクリックするか、
直列処理設定ボタンを押します。



このイベント開始条件が終わらない限りは、新たなキー入力があった場合でも処理ができず、
イベントコマンド実行動作が遅れるため、素早く処理が終わる「直列処理」を用います。
(直列処理についてはヘルプを参照してください。)


ステップ5:弾オブジェクトをつくる

つづいて、銃から弾を発射する処理を作っていきます。
まずは、弾オブジェクトを作成します。(名称と大きさを適当に設定し、適当に色を付けます。)
下図みたいなかんじに。

画像5:弾オブジェクトの作成

(クリックで拡大)


つづいて、あたり判定矩形を作成します。
あたり判定によって以下のような動作をさせるようにします。
  1. ほかの配置オブジェクトとあたり判定されたらダメージを与えると同時に弾を消す
    (本講座では、敵にダメージを与える処理についての解説はありません。)
  2. マップ上の通行不可チップとあたり判定されたら弾を消す
弾が増え続けるとゲームの動作に支障をきたす(処理増大で過負荷となる)ため、以上のような
条件で弾を消す必要があります。
項目1の動作では「オブジェクト同士の判定矩形」をつかい、項目2では「通行の判定矩形」を用います。 そこで、「オブジェクト同士の判定矩形」を一つ、「通行の判定矩形」を一つ作成します。

画像6:弾オブジェクトのあたり判定矩形

(クリックで拡大)

自オブジェクト通行の判定矩形とマップチップもしくは、自オブジェクト通行の判定矩形と
他オブジェクトの通行の判定矩形とが当たり判定されると、「通行あたり判定がされたとき」
イベント開始条件が呼び出されます。

今回は、この開始条件を用いてマップチップとのあたり判定を検知したいため、通行の判定矩形も
作成します。
ここで、「通行の判定矩形」作成の際には、上図@部分の「マップチップのみに通行判定をする」に
チェックを入れます。
このようにすることで、オブジェクト同士では通行判定がなされないため、弾によって敵オブジェクトが
押し出されて移動されないようにします。

注意
この設定をするとオブジェクト同士の通行判定がなされないため、オブジェクト同士で
通行の判定矩形が衝突しても、「通行あたり判定がされたとき」イベント開始条件は呼び出されない
ので注意が必要です。

ここまでできたら、弾オブジェクトのイベント開始条件「通行あたり判定がされたとき」と
「オブジェクト同士が触れたとき」に、以下のようにイベントコマンドを配置します。

コマンド4:弾が衝突したときのイベント
死亡フラグを立てる(消滅させる
設定するイベントパラメータ:
パラメータ名称 設定する値
操作対象配置オブジェクト 自分自身を設定します。
オブジェクト

このようにすることで、マップチップの通行不可部分やオブジェクト同士が衝突した際
(オブジェクト同士の判定矩形が衝突した際)には、弾を消滅させることができます。

また、「配置オブジェクト発生時」イベント開始条件には、以下のようにイベントコマンドを置きます。
コマンド5:弾が発生した時のイベント
重力の発生を設定する
設定するイベントパラメータ:
パラメータ名称 設定する値
重力を発生させる 「いいえ」を設定します。
オブジェクト→速度・モーション・重力系

これで、弾オブジェクトの大部分は完成です。


ステップ6:銃から弾を発射させる

それでは、弾を発射させるように銃オブジェクトを編集しましょう。
弾を発射させることを考えてみると、銃口が右を向いているときと左を向いているときとでは、
弾の速度の向きが異なりますね。
つまり、銃口がどちらを向いているのかがわかっていないと、弾を発射できないというわけです。

そこで、銃口の向きを変えるタイミングで、データアイテムにその向きを記録しておけるように
しましょう。

まずは、銃オブジェクトのオブジェクトデータベースを編集します。

画像7:オブジェクトデータベース編集その1

(クリックで拡大)

編集するオブジェクトを銃オブジェクトとし、上図赤枠部分の「オブジェクト・データベースを使用する」に
チェックをつけてから、「初期値を設定する」ボタンを押します。

画像8:オブジェクトデータベース編集その2

(クリックで拡大)

編集を以下の手順で行ってください。
  1. 上図@部分で名称を設定します。
  2. 上図A部分でデータアイテム種別を「整数列挙値」とします。
  3. 上図B部分で列挙値編集ウインドウを表示させます。
  4. 上図C部分で定数リストに「右向き」、「左向き」を追加します。
  5. 列挙値編集ウインドウを閉じ、上図D部分でデータアイテムを追加します。

ワンポイント
整数列挙値データアイテムについては、ヘルプにて詳しく説明しています。
参考にしてみてください。


ここまでできたら、弾を発射させる準備が整いましたので、銃オブジェクトの
「いずれかのキーが押下されたとき」イベント開始条件を再び編集します。


「オブジェクトを発生させる」イベントコマンド

その前に、今回使用する「オブジェクトを発生させる」イベントコマンドについて説明します。
このイベントコマンドは、タイトル通りオブジェクトから配置オブジェクトを新規に作成し、
このイベントコマンドの実行元配置オブジェクトが存在するマップに配置するものです。

イベントパラメータを見てみましょう。




配置位置設定

まずは「配置位置設定」を見てみます。

X位置、Y位置を設定することで、オブジェクトの
発生場所を設定することができます。
このとき、「現在の配置位置を基準にする」設定が
「はい」になっていた場合は、右図のように、
このイベントコマンドを実行した配置オブジェクトの
左上隅が位置指定の原点となります。

つまり、実行元配置オブジェクトからX方向、Y方向に
どれだけずらすか、ということを設定することに
なります。

発生オブジェクト設定

「発生させるオブジェクト」で、発生させるオブジェクトを設定します。

配置レイヤー設定

配置レイヤーを設定します。

データアイテム代入設定

このイベントコマンドで作成した配置オブジェクトを、データアイテム種別「配置オブジェクト」の
データアイテムに代入するための設定です。
このイベントコマンドで作成した配置オブジェクトを別のイベントコマンドで操作したりするには、
この機能を使用します。

イベントコマンドを追加する前に、このイベント開始条件(いずれかのキーが謳歌されたとき)の
イベントデータベースにデータアイテム種別「配置オブジェクト」のデータアイテムを1つ作成して
おきましょう。
(このデータアイテムに値は設定しなくていいです。)
このイベントコマンドで作成した「弾オブジェクト」を操作するために、作成された配置オブジェクトを
代入するためのものです。

それでは、イベント開始条件「いずれかのキーが押下されたとき」を編集します。

※イベントコマンドを追加した行の行番号をオレンジ色にしています。
※あらかじめ弾を発射させるときに押すキーボードのキーを登録しておいてください。

コマンド6:キー操作イベント(弾を発射する機能を追加)
条件分岐
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで右キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が右を向いているアニメーションを設定します。
オブジェクト→表示
データアイテムの値を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
参照データアイテム 先ほど作成した整数列挙値データアイテムを設定します。
参照データアイテム 「右向き」を設定します。
データベース操作
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで左キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が左を向いているアニメーションを設定します。
オブジェクト→表示
データアイテムの値を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
参照データアイテム 先ほど作成した整数列挙値データアイテムを設定します。
参照データアイテム 「左向き」を設定します。
データベース操作
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで弾の発射キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
条件分岐
設定するイベントパラメータ:
  • 比較対象1:先ほど作成した整数列挙値データアイテムを設定
  • 比較対象2:「右向き」
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトを発生させる
設定するイベントパラメータ:
パラメータ名称 設定する値
X位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は20と 設定するといいです。このとき、位置の原点は銃オブジェクトの 左上位置となります。
Y位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は0と 設定するといいです。
現在の配置位置を基準にする 「はい」を設定します。
発生させるオブジェクト 弾オブジェクトを設定します。
発生させた配置オブジェクトをデータアイテムに設定 「はい」を設定します。
(参照データアイテム) 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト
配置オブジェクトに速度を加算する
設定するイベントパラメータ:
パラメータ名称 設定する値
X成分加算量 正の数を適当に入力します。(3くらいがいいかな?)
右向きに発射するには正の数を入力します。
操作対象配置オブジェクト 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト→速度・モーション・重力系
条件分岐(いずれにも当てはまらない場合)
設定するイベントパラメータ:
(編集するパラメータはありません。)
フロー制御→条件分岐セット
オブジェクトを発生させる
設定するイベントパラメータ:
パラメータ名称 設定する値
X位置 弾を発射させたい位置を設定します。弾の幅-1ぐらいの負の数を 設定するといいです。このとき、位置の原点は銃オブジェクトの 左上位置となります。
(例:-7)
Y位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は0と 設定するといいです。
現在の配置位置を基準にする 「はい」を設定します。
発生させるオブジェクト 弾オブジェクトを設定します。
発生させた配置オブジェクトをデータアイテムに設定 「はい」を設定します。
(参照データアイテム) 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト
配置オブジェクトに速度を加算する
設定するイベントパラメータ:
パラメータ名称 設定する値
X成分加算量 負の数を適当に入力します。(-3くらいがいいかな?)
左向きに発射するには負の数を入力します。
操作対象配置オブジェクト 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト→速度・モーション・重力系
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット

上記イベントで注意しなければならないのが、弾オブジェクト発生場所です。
弾オブジェクトは、オブジェクト同士の衝突もしくは通行不可マップチップとの衝突によって
自滅するようにイベントを組みましたね。
つまり、プレイヤーキャラクターとの衝突でも弾オブジェクトは消えてしまいますので、
発生位置はこのことを考慮し、プレイヤー位置と重ならないようにしなければなりません。

ワンポイント
このような場合、プレイヤーなどの判定矩形を識別し、条件分岐によって自滅しないような
イベントを組めば、発生位置を気にすることなく済みます。
(いずれ解説記事を書くつもりです...)

ここまでできたら、ゲームを実行してみましょう。


弾の発射ボタンを押すと、次から次へと弾が生成されるため、上図のようになってしまいます。
これはこれでいいかもしれませんが、弾の発射間隔を調整できるといいですね。

このため、たとえば銃オブジェクトの「いずれかのキーが押されたとき」イベント開始条件に、
以下のように「指定時間イベントを待機する」イベントコマンドを挿入したとします。

※追加したイベントコマンドの行番号がオレンジ色で示されています。
コマンド7:キー操作イベント(待機イベントをつけてみた)
条件分岐
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで右キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が右を向いているアニメーションを設定します。
オブジェクト→表示
データアイテムの値を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
参照データアイテム 先ほど作成した整数列挙値データアイテムを設定します。
参照データアイテム 「右向き」を設定します。
データベース操作
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで左キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が左を向いているアニメーションを設定します。
オブジェクト→表示
データアイテムの値を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
参照データアイテム 先ほど作成した整数列挙値データアイテムを設定します。
参照データアイテム 「左向き」を設定します。
データベース操作
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで弾の発射キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
条件分岐
設定するイベントパラメータ:
  • 比較対象1:先ほど作成した整数列挙値データアイテムを設定
  • 比較対象2:「右向き」
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトを発生させる
設定するイベントパラメータ:
パラメータ名称 設定する値
X位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は20と 設定するといいです。このとき、位置の原点は銃オブジェクトの 左上位置となります。
Y位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は0と 設定するといいです。
現在の配置位置を基準にする 「はい」を設定します。
発生させるオブジェクト 弾オブジェクトを設定します。
発生させた配置オブジェクトをデータアイテムに設定 「はい」を設定します。
(参照データアイテム) 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト
配置オブジェクトに速度を加算する
設定するイベントパラメータ:
パラメータ名称 設定する値
X成分加算量 正の数を適当に入力します。(3くらいがいいかな?)
右向きに発射するには正の数を入力します。
操作対象配置オブジェクト 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト→速度・モーション・重力系
条件分岐(いずれにも当てはまらない場合)
設定するイベントパラメータ:
(編集するパラメータはありません。)
フロー制御→条件分岐セット
オブジェクトを発生させる
設定するイベントパラメータ:
パラメータ名称 設定する値
X位置 弾を発射させたい位置を設定します。弾の幅-1ぐらいの負の数を 設定するといいです。このとき、位置の原点は銃オブジェクトの 左上位置となります。
(例:-7)
Y位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は0と 設定するといいです。
現在の配置位置を基準にする 「はい」を設定します。
発生させるオブジェクト 弾オブジェクトを設定します。
発生させた配置オブジェクトをデータアイテムに設定 「はい」を設定します。
(参照データアイテム) 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト
配置オブジェクトに速度を加算する
設定するイベントパラメータ:
パラメータ名称 設定する値
X成分加算量 負の数を適当に入力します。(-3くらいがいいかな?)
左向きに発射するには負の数を入力します。
操作対象配置オブジェクト 先ほど作成した、イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト→速度・モーション・重力系
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット
指定時間イベントを待機する
設定するイベントパラメータ:
パラメータ名称 設定する値
待機時間 待機時間を適当に設定します。
フロー制御
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット

でも、このようにしてしまうと、イベント待機中はキー入力を受け付けなくなってしまうので、
プレイヤーが向きを変えた時、銃オブジェクトは向きを変えられなくなる可能性が出てしまいます。

そこで、銃オブジェクト内に新たにイベント開始条件を作成し、ここで弾発射イベントを
組んでいきます。



イベント開始条件を呼び出すイベントコマンド「他配置オブジェクトイベント開始条件を呼び出す」を
用いると、自身もしくは他配置オブジェクトのユーザー定義イベント開始条件を呼び出すことが
できます。
呼び出されたイベント開始条件は、上図のようにほかのイベント開始条件と同時に実行することが
できるので、新規作成したイベント開始条件内で待機コマンドを用いることで、支障なく弾の
生成間隔を調整することができるようになります。


ユーザー定義イベント開始条件とは?
ユーザーがつくったイベント開始条件のことです。


以下に、イベント開始条件の作り方を説明します。
画像9:ユーザー定義イベント開始条件のつくりかた1

(クリックで拡大)

上図に示す「イベント開始条件新規作成ボタン」をクリックし、作成する開始条件の名称を入力します。
これだけで完了です。

あとは、この中に先ほど書いた弾の生成イベントを記載します。
※新規作成したイベント開始条件内のイベントデータベースに、配置オブジェクトデータアイテムを作成
 することを忘れないでください。

コマンド8:新規作成したイベント開始条件に弾発射イベントを作成
条件分岐
設定するイベントパラメータ:
  • 比較対象1:先ほど作成した整数列挙値データアイテムを設定
  • 比較対象2:「右向き」
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトを発生させる
設定するイベントパラメータ:
パラメータ名称 設定する値
X位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は20と 設定するといいです。このとき、位置の原点は銃オブジェクトの 左上位置となります。
Y位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は0と 設定するといいです。
現在の配置位置を基準にする 「はい」を設定します。
発生させるオブジェクト 弾オブジェクトを設定します。
発生させた配置オブジェクトをデータアイテムに設定 「はい」を設定します。
(参照データアイテム) イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト
配置オブジェクトに速度を加算する
設定するイベントパラメータ:
パラメータ名称 設定する値
X成分加算量 正の数を適当に入力します。(3くらいがいいかな?)
右向きに発射するには正の数を入力します。
操作対象配置オブジェクト イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト→速度・モーション・重力系
条件分岐(いずれにも当てはまらない場合)
設定するイベントパラメータ:
(編集するパラメータはありません。)
フロー制御→条件分岐セット
オブジェクトを発生させる
設定するイベントパラメータ:
パラメータ名称 設定する値
X位置 弾を発射させたい位置を設定します。弾の幅-1ぐらいの負の数を 設定するといいです。このとき、位置の原点は銃オブジェクトの 左上位置となります。
(例:-7)
Y位置 弾を発射させたい位置を設定します。サンプル画像を使用の場合は0と 設定するといいです。
現在の配置位置を基準にする 「はい」を設定します。
発生させるオブジェクト 弾オブジェクトを設定します。
発生させた配置オブジェクトをデータアイテムに設定 「はい」を設定します。
(参照データアイテム) イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト
配置オブジェクトに速度を加算する
設定するイベントパラメータ:
パラメータ名称 設定する値
X成分加算量 負の数を適当に入力します。(-3くらいがいいかな?)
左向きに発射するには負の数を入力します。
操作対象配置オブジェクト イベントデータベース内の弾オブジェクトを格納する 配置オブジェクトデータアイテムを設定します。
オブジェクト→速度・モーション・重力系
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット
指定時間イベントを待機する
設定するイベントパラメータ:
パラメータ名称 設定する値
待機時間 待機時間を適当に設定します。
フロー制御

ワンポイント
上記のイベントコマンドは、さきほど「いずれかのキーが押されたとき」イベント開始条件内で
記述したものと同じですね。

そこで、「いずれかのキーが押されたとき」イベント開始条件内の該当部分を選択し、コピー
することで素早く作成できます。


(クリックで拡大)

複数選択は、上記の画像の手順で行います。
また、コピー・貼り付け動作には、Windows標準のショートカットキー(Ctrl+C, Ctrl+V)が
利用できます。

ここで、新規作成したイベント開始条件内のイベントデータベースに配置オブジェクト
データアイテムを作成し、コピーしたイベントコマンドに適用することを忘れないでください。
(上記行番号1,2,4,5の配置オブジェクト設定パラメータで再設定が必要になります。)

それでは、今度は銃オブジェクトの「いずれかのキーが押されたとき」イベント開始条件を
再編集します。
※以前の編集から変化しないイベントコマンドの行番号は緑色にしています。
※以前の編集から追加したイベントコマンドの行番号はオレンジ色にしています。

コマンド9:キー操作イベントの再編集
条件分岐
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで右キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が右を向いているアニメーションを設定します。
オブジェクト→表示
データアイテムの値を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
参照データアイテム 先ほど作成した整数列挙値データアイテムを設定します。
参照データアイテム 「右向き」を設定します。
データベース操作
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで左キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
オブジェクトアニメーションを変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
変更後の
アニメーション
銃口が左を向いているアニメーションを設定します。
オブジェクト→表示
データアイテムの値を変更する
設定するイベントパラメータ:
パラメータ名称 設定する値
参照データアイテム 先ほど作成した整数列挙値データアイテムを設定します。
参照データアイテム 「左向き」を設定します。
データベース操作
条件分岐(そのほかに)
設定するイベントパラメータ:
  • 比較対象1:押されたキー
  • 比較対象2:押下キー情報とし、「設定する」ボタンで弾の発射キーを選択
  • 比較演算子:と等しい
と設定します。
フロー制御→条件分岐セット
他配置オブジェクトイベント開始条件を呼び出す
設定するイベントパラメータ:
呼び出す開始条件を、以下の画像を参考に設定します。
パラメータ設定画像

・「呼び出し先イベント終了まで待機」は「いいえ」に設定する
オブジェクト→表示
条件分岐終了点
イベントパラメータの設定はありません。
フロー制御→条件分岐セット


ここまでできたら、ゲームを実行してみましょう。
上図のように、一定間隔で生成される弾が発射されれば成功です。


これにて本講座は終了です。おつかれさまです。
(かなり長い説明になってしまったなぁ -_-;)

本ページでわかりづらいところや、「この通りにつくったけれど動かない」といった問題は、
掲示板やメールフォームなどからお問い合わせください。



←もくじへもどる