チュートリアル: 「0からはじめるACTION GAME MAKER」第三章

「攻撃判定」「あたり判定」を調整しよう。

大きすぎるHitCollisionのサイズを調整しましょう。そして、今回のスタイルでは本体の攻撃判定は不要なので思い切って削除してしまいましょう。(近接攻撃を使うのであれば扱いますが、今回は近接攻撃は作りません。)

1. HitCollisionを選択します。

2. 四隅を動かして、壁判定より一回り大きい程度に調整しましょう。

3. AttackArea2Dを右クリックします。

4. メニューの最下部に削除があるので「削除」しましょう。

5. AttackArea2Dとその子ノードを削除しますか?というウィンドウがでるのでOKを押しましょう、これでAttackArea2Dとその子であるAttackCollisionノードが削除できます。

「被ダメージ」のスクリプトを作ろう

「敵の攻撃にあたった」とき「被ダメージ」に遷移する、「被ダメージ」では少しの間動けなくなり、少し後ろに下がる(表示方向と逆方向に移動する)と設定すればよさそうですが、問題はどこのステートから遷移させるかです、Playerには既に7つのステートがあり、すべてからリンクをつなぐのは大変です。こういったときには「AnyState」ボックスを使うことができます。

「AnyState」とは?

その名の通りAny(すべての)ステートを意味します。このステートから繋がれたリンクは、元のステートがどこであっても条件を満たせば遷移するようになります。さらに、専用の実行アクション「前のステートに戻る」を実行することで、遷移前のステートにリンクを無視して戻すことができます。

今回の被ダメージのようなアクションは最適なステートです。

「被ダメージ」ステートを作ろう

「被ダメージ」ステートでは、「動けず」「後ろ(表示方向とは逆)に移動し」「一定時間が経過後」「前のステートに戻る」と設定します。

1. AnyStateの右の空間を右クリックして「ステートを追加」しましょう。

2. 作成されたステート001を「被ダメージ」とリネームします。

3. アニメーションカテゴリ名で「被ダメージ」を指定します。

4. インスペクターの「アクション設定」を展開します。

5. 「動作中の移動の入力を受け付けない」と「動作中の表示方向の変更を受け付けない」をオンにしましょう。これで、被ダメージリアクション中は動けず、表示方向も変わらないようになりました。

6. 「+実行アクションを追加」を選択します。

7. 「表示方向へ移動」を選択します。

8. オプション「逆方向へ移動」を有効にして「追加」します。

9. 再び「+実行アクションの追加」を選択します。

10. 今度は「ウェイトを入れる」アクションを選択します。

11. 「数値」オプションを0.2秒にし、「追加」します。全角ではうまく入力できませんので半角で0.2と設定しましょう。これで、次の実行アクションまで0.2秒の待機が入る、つまり0.2秒間、「表示方向と逆方向に移動」が継続します。

12. 再び「+実行アクションの追加」を選択します。

13. 最後に「前のステートに戻る」アクションを選択して「追加」します。

14. 実行アクションが以下のように並んでいれば完成です。

「AnyState」と「被ダメージ」をリンクでつなごう

AnyStateからのリンクも通常のリンクと同じように作ることができます。

1. AnyStateを右クリックして「リンクを追加」します。

2. 「被ダメージ」ステートに繋ぎます。

3. インスペクターで「+その他条件の追加」をクリックします。

4. 「オブジェクトの攻撃判定に接触」アクションを選択します。

5. 「すべての方向をチェック」して追加します。

6. これで、攻撃に、どの方向からでもあたると「被ダメージ」に遷移します。

テストプレイをしてみよう

正しく被ダメージリアクションができるか、テストプレイをして敵にぶつかってみましょう。うまく設定できていれば、敵にぶつかると操作不能になり点滅しながら少し後ろにさがります。

うまくいかないときのチェックリスト

点滅しない:BaseSettingsの無敵設定を見直してみましょう。

被ダメージのリアクションが発生しない:リンクの条件を確認しましょう。

リアクションが発生するが動作がおかしい:被ダメージステートの内容を確認してみましょう。

第三章の振り返り

さて、今回は以下の学習を行うことができました。

様々なタイプのゲームオブジェクトの作成を通した、オブジェクト制作の反復練習

コリジョンレイヤーとコリジョンマスクの概念

被ダメージと無敵

AnyStateの扱い方

しかし、攻撃やダメージの処理はできましたが、画面は狭く、音も出ません。ゲームオーバーになりません。

これではゲームとはいえませんので、第四章では、きちんとゲームとして動作するようにしていきます。