「30分で作ろう」シリーズ(1) ライオンシューティング
3. 弾を発射する
プレイヤーと敵ができたので、いよいよ弾を発射するプログラムを作りましょう。

<この章の内容>
| 概要 | 学ぶこと |
| 弾を作って飛ばすプログラムや、弾が背景や敵に ヒットした時のプログラムを作ります。 | ・重力の設定 ・分身機能 ・オブジェクトを飛ばすプログラム ・当たり判定 ・オブジェクトの削除 |
弾にするオブジェクトを追加する
最初に弾となるオブジェクトを追加します。
画面右下の「オブジェクト追加」ボタンをクリックします。

左上の「カテゴリ」ボタンをクリックし、表示される画面で「素材」をクリックします。

素材の一覧から「球」をクリックします。

オブジェクトリストの一番下に「球」が追加されます。
「球」の文字をクリックして、「弾」に変更します。
シーン編集画面で弾を確認すると、図のようになっています。

弾が大きすぎるので、小さくしたいです。
また、もう一つ設定を行いたいので、「オブジェクト詳細」画面に移動します。オブジェクトリストで「虫眼鏡」アイコンをクリックします。

「オブジェクト詳細」画面が開きます。
画面右上の「大きさ」の数字を(0.50, 0.50, 0.50)に変更します。
*座標、角度、大きさの変更は、シーン編集画面でも行えます。
「重力の影響」を「ON」にします。
「OFF」の場合、弾は重力の影響を受けないので、地面に落ちることなく直進していきます。地面に落ちるようにしたいので、重力の影響を受けるようにします。

Mind Renderのオブジェクトには、重力の他にも、重さ、はね返り、摩擦、抵抗など様々な物理設定を行うことができます。
弾の分身をつくる
弾はたくさん必要ですが、上記のようにオブジェクトを1つずつ追加するのは大変です。このような時は“分身”機能を使うと便利です。
分身について
“分身”とは、オリジナルのオブジェクトからコピー(クローン)を作る機能です。プログラム実行中に指定のタイミングで指定の位置に作成でき、作成された分身にプログラムすることができます。
「Aボタン」を押したら弾(弾の分身)が発射されるようにしてみましょう。
「Aボタン」にプログラムを追加します。

「1.プレイヤーをつくる」で、Aボタンには図のようなプログラムを作りました。

ここに、「分身を作る」ブロックを追加します。
「分身を作る」ブロックは「テクニック」カテゴリーにあります。

「弾」の分身を作ります。
弾の分身をどこに作りたいかを設定します。弾が銃から発射されるように見せたいので、「ドンポンプ」の構える銃の先端当たりの位置を指定しましょう。「[ドンポンプ]から見て」を選択すると、ドンポンプの体の中心を原点(0, 0, 0)として位置を指定することができます。
図では、
・X:0.00(ドンポンプの体の左右中心)
・Y:1.2(地面からの高さ。銃を構えた時の銃身の高さくくらい)
・Z:0.50(ドンポンプの前方。銃を構えた時の銃の先くあらい)
となります。
「1秒待つ」ブロックは、タイミングを調整するために入っています。銃を撃つモーションの再生が終わるまでに1秒くらいかかるため、モーションの途中で分身が作成され、弾が発射されてしまうのを防ぐために入れます。
「●秒待つ」ブロックは「iF」カテゴリーにあります。
分身を作っただけでは、弾のように飛んでいきません。分身を動かすためのプログラムを作ります。

「弾」オブジェクトに、図のようなプログラムを作ります。
弾の分身が作成されたら、その分身に後ろから押して飛ばします。
プログラムを実行して、好みの距離に飛ぶように調整しましょう。

弾がライオンに当たった時、外れた時のプログラムをつくる
弾がライオンに当たった時と、外れた時のプログラムを作りましょう。

「弾」オブジェクトに、図のようなプログラムを作ります。
上のプログラムが弾が当たった時、下のプログラムが弾が外れた時です。
「グループと接触したら」ブロック、「~と接触したら」ブロックは「イベント」カテゴリーにあります。
「~を削除」は「テクニック」カテゴリーにあります。

<弾が当たった時>
弾がライオンに当たると、弾もライオンも画面から消えるプログラムです。
弾の分身(自分)が、敵グループ(のライオン)に当たったら、相手(のライオン)を削除し、続いて、自分自身も削除します。
「相手」とは、敵グループに属するライオンを指します。グループ内のどのライオンでも、弾があたったライオンが「相手」となります。
<外れた時>
弾が外れたら、弾を消します。
弾の分身(自分)が外れ、背景(トラック)に落ちたら、自分を削除します。
オリジナルの弾を非表示にする
最後に、オリジナルの弾が原点に表示されているため、非表示にしておきます。

当たり判定
Mind Renderでは、オブジェクトとオブジェクトが接触したことを検知し(当たり判定)、それをきっかけにプログラムを実行することができます。オブジェクトやグループ以外にも、サーチエリア/ヒットエリアや装備などとの接触を利用することができます。「イベント」カテゴリーには、当たり判定を利用するいろいろなブロックがあります。
