ローグライクゲームの作り方5 パラメータの実装とターン制戦闘システムを開発する | Unity入門の森 ゲームの作り方

ローグライクゲームの作り方5 パラメータの実装とターン制戦闘システムを開発する

Unity ローグライクゲームの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

前回までの記事で敵の移動AIをUnityとC#でローグライクRPGに組み込んでいきました。

前回の記事:

ローグライクゲームの作り方4 敵に視野を持たせてプレイヤーを追いかけるようにする
前回の記事では敵をマップに配置し移動できるようにしました。さらに、プレイヤーと敵ターンの概念を導入し、お互いが交互に動けるようにC#スクリプトを作成しました。前回の記事:今回の記事では、敵がプレイヤーを見つけたら追いかけてくるように経路探索...

今回の記事ではプレイヤーと敵がぶつかった時に戦闘するようにしていきましょう!

まずは戦闘に必要なプレイヤーのステータスパラメータを作り、戦闘システムを実装します。

また、敗北時はゲームオーバー表示を行うようにしましょう。


【Line登録者限定のプレゼントもあるよ!】

キャラクターのステータスを組み込む

プレイヤーと敵が戦闘する際にはいくつかのパラメータが必要になります。

RPGでは色々なパラメータが用意されており、それらを使ってダメージなどを計算行いますが、この講座では簡単化のために次のパラメータのみでシンプルな戦闘システムを作ります。

  • Life:体力
  • Attack:攻撃力

また、敵同士で戦闘しないようにするために識別用のパラメータも用意します。

  • Group: 敵味方の識別用パラメータ

これらのパラメータを「MapObjectBase」コンポーネントに持たせるようにします。スクリプトに以下の追加を行いましょう。

「CurrentGroup」フィールドはデフォルトで「Other」に設定しておきます。

「Other」は攻撃できないオブジェクトを表すので、このまま攻撃処理を実装しても再生時に攻撃できない状態になっています。

なので、「Player」プレハブと「Enemy」プレハブそれぞれに合ったGroupの値を設定しましょう!

ローグライクゲームにおけるターン制戦闘システムの実装

戦闘用のパラメータをキャラに持たせたので、次はローグライクゲームにおける攻撃の方法を実装します。

この講座では移動先に「MapObjectBase」コンポーネントを継承したオブジェクトが存在する時にそのオブジェクトに攻撃するようにします。

以下に戦闘のロジックを記述しています。この記事ではこの内容に沿って戦闘システムを作成していきます。

  • 移動先に攻撃可能なオブジェクトがあるか確認する
  • 攻撃可能な場合は、自身の攻撃力分だけ相手のライフにダメージを与える。
  • 攻撃の結果、相手オブジェクトのライフが0以下になったらそのオブジェクトを削除し、そのマスに移動する。
  • まだライフが残っている場合は自身は移動せずその場に留まる。

それでは攻撃できるようにスクリプトを修正していきます。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

今回の記事ではまずはシンプルな戦闘システムの実装を行いました。

  • 戦闘用のパラメータを「MapObjectBase」コンポーネントに組み込み
  • 戦闘用のメソッドを「MapObjectBase」コンポーネントに組み込み
  • ゲームオーバー処理の組み込み

今回の5回目までの講座だけでもローグライクRPGの基本部分であるマップ移動とターン制戦闘システムができあがりましたね。

ここからはこの基本システムをどんどん拡張して本格的なローグライクゲームに仕上げていきます。

それでは次の記事に行ってみましょう。

ローグライクゲームの作り方6 パラメータ表示用UI・経験値・レベルアップ処理を開発する
前回の記事ではUnityとC#を用いてローグライクRPGの戦闘システムを実装しました。風来のシレン、トルネコの大冒険、チョコボの不思議なダンジョンのようなターン制戦闘システムを作成しましたね。前回の記事:今回の記事ではプレイヤーのパラメータ...

 

Unity ローグライクゲームの作り方講座へ>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

  1. capskey より:

    MapObjectBaseのところが、MapCharacterBaseになっている場所が何箇所かあるかと思います。
    ここだけでなく、2ページ前にも。混乱するので、修正いただければと思います。

    • Unity入門の森 より:

      コメントありがとうございます。返信遅くなりすみません。確認させていただきました。
      MapObjectBaseが正しいです。
      ご指摘ありがとうございました。

  2. しむあん より:

    MapCharacterBase→MapObjectBase?

    • Unity入門の森 より:

      コメントありがとうございます。
      こちらMapObjectBaseが正しいです。
      既に作成したスクリプトに追加し、それを継承していく流れになります。

タイトルとURLをコピーしました