【Unity】3DダンジョンRPGの作り方 第13回|スキルツリー成長システムを実装する | Unity入門の森 ゲームの作り方

【Unity】3DダンジョンRPGの作り方 第13回|スキルツリー成長システムを実装する

Unity 3DダンジョンRPGの作り方 ~世界樹・ウィザードリィ風ゲームを作ろう~

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

この記事は3DダンジョンRPGの作り方講座の第13回になります。

前回まででキャラクターの作成からダンジョンの探索、戦闘までの流れを一通り実装しました。

前回の記事:

【Unity】3DダンジョンRPGの作り方 第12回|エンカウントとレベルアップシステムの実装
この講座は3Dダンジョン探索型RPGの作り方について説明しています。今回はその第12回目になります。前回は街シーンを編集し、キャラクターの作成や編成の変更を行えるようにしました。前回の記事:今回はダンジョンシーンを編集し、ダンジョン内を歩く...

今回は街シーンで職業ごとに決められたリストの中からアクターがスキルを選んで習得できるシステムを実装します。

世界樹の迷宮などでも採用されているスキルツリー形式にすることで、〇〇を習得済みでないと次のスキルを習得できない、といった前提スキルの作成もできます。

本格的なスキルツリー型の成長システムやスキルツリーゲームの作り方を解説してるサイトは日本初だと思います。ぜひ楽しんでいってください!

【ゲームの作り方講座プレゼント中!】

Unityでスキルツリーシステムを実装する

本作のスキルシステムの仕様について

このゲームのスキル・スキル習得の大まかな仕様は以下のようになっています。

  • 職業ごとに固有のスキルツリーが存在している
    (JobDataクラスにスキルツリーの情報を作成できる)
  • 街シーンでスキルツリーのウィンドウを開くことができ、スキルポイントを割り振ってスキルの習得が可能
  • 習得済みのスキルに追加でスキルポイントを割り振るとスキルのレベルアップが可能(最大レベルは個別に設定)
  • キャラクターは初期状態でスキルポイントを一定数所持しており、
    さらにレベルアップの度に1ポイント獲得する
  • 各スキルは前提スキルを1つまで設定可能
    前提スキルのスキルレベルが指定値に達していないとそのスキルは習得不可

これらの内容をもとに、まずはスクリプトを編集してスキルツリーをJobData内に設定できるようにします。

スキルツリーとスキルノードをUnity C#で作成する

スキルツリー上の各スキルの情報はSkillNodeとして作成します。このクラスをもとに、職業データのScriptableObjectでInspectorからスキルツリー内の情報を設定できるようにしていきます。

ActorData.cs

キャラクターが習得したスキルの情報を管理できるようにしました。
Dictionaryを用いることでスキルデータとスキルレベルを紐づけて同時に扱えます。

また、残りスキルポイントの情報も管理してレベルアップ時には1ポイント追加されるようにします。

SkillTreeNode.cs (新規)

Scripts > Definesフォルダに新しいC#スクリプトを作成します。

まだこの段階では何をしているかわかりづらいかもしれないですが、スキルツリーシステムで並んでいるスキルノードの定義をしています。

スキルをレベル制で習得・強化できるか判定し、実際に習得処理を行う最小単位といったイメージです。

今はまだ途中段階です。「スキルポイントを消費してスキルを取得するロジック」の中核部分だけが書かれています。

JobDataのScriptableObjectのInspector内で編集することを想定した設計です。
スキルデータのScriptableObjectを各パラメータにドラッグ&ドロップで指定可能できるようにしていきます。

ちなみにMonoBehaviourは継承しません。(継承するとInspectorからのパラメータの編集が出来なくなります。)

Data.cs内 CreateCharacterDataメソッド

キャラクターの初期化時に習得済みスキルリストのインスタンスを作成し、初期獲得スキルポイントをセットしています。

JobData.cs

職業データがスキルツリー用データをリストで設定・管理できるようにすれば準備完了です。

Inspectorから各スクリプトを設定

アクタースキル作成

まずは適当なアクター用スキルを複数作成します(3~5つ程度でOK)

現在はダメージ効果以外は未実装ですが、あとでスキルツリーの確認が出来れば良いので気にせず適当に用意しましょう。

↑攻撃スキル「スマッシュ」を作成します。スキル発動時効果はAdd Damage Effectを選択してから数値を入力します。

まだ攻撃スキルの効果実装しかしていないのでひとまずここでは4つの攻撃スキルを作成しました。

スキルツリーのデータ設定の仕様

スキルツリーを設定するJobDataを1つ選択してInspectorを確認します。

下部にSkillTreeパラメータが追加されているので割り当てたいスキルの数だけ要素を追加しましょう。

各要素(ノードと呼称)の1個目のパラメータ[Skill Data]にはそのノードが対応するスキルデータのScriptableObjectを指定します。

[Require Skill]には前提スキルのスキルデータを同様に指定します。前提スキルが無いなら空欄(null)のままにしておきます。

前提スキルがスキルツリーに存在しない場合や、2つのスキルが相互に前提スキルとして指定し合っている場合は後々エラーが出るので注意してください。

また、「基礎スキル→派生スキル→更に派生のスキル」という三階層まで前提スキルは指定可能です。
言い換えるなら「前提の前提スキル・前提スキル・スキル」という構造は可能です。

[Require Skill Level]は前提スキルが指定されている場合、その前提スキルに必要なスキルレベルの数値を入力します。1以下ならスキルレベル不問で習得しているだけで条件クリアです。3と入力したならスキルレベルを3まで上げていないとこのスキルは習得できません。

実際にスキルツリーデータを構築してみる

それでは試しにスキルツリーを作ってみましょう。今回はウォーリアのジョブにスキルツリーを構築していきます。JobDataのScriptable Objectでスキルツリーを設定していきます。

↑このように設定してみました。スマッシュは無条件で習得可能。タイタンブローはスマッシュを習得していれば習得可能。アースシャッターはタイタンブローを習得していれば習得可能。そしてリコイルストライクはスマッシュのレベルが3以上であれば習得可能です。

スキルツリー画面の作成

それではここからは実際のスキルツリー画面の作成を行っていきましょう。

スキルツリー画面(スキルの習得とレベルアップを行う画面)は街シーンにおける施設UIの1つとして作成します。

他の施設UIと同様にFacilityUIプレハブからインスタンスを作成します。オブジェクト名はFacilityUI_SkillTreeとします。
ウィンドウサイズは大きく確保しておくと良いでしょう。

WindowオブジェクトでWidthとHeightを調整し、WindowLogoTextの内容をスキル習得に変更しました。

スキルツリーシステムウィンドウのUIパーツ作成

”スキルツリー内のノードはそれぞれUIで表示し、クリック(タップ)で選択することでそのスキルの習得・レベルアップを行える”という設計方針で進めていきます。

そしてツリー上のノードUIは前提スキルと派生スキルを線でつないで表示したいので、線も画像UIとして作成していきます。

アクターリスト表示ScrollView_ActorsScrollView

作成済みの全キャラクターを表示するScrollViewオブジェクトです。

これは編成画面(FacilityUI_Formation)の待機中アクターリストと同一のUI仕様でよいため、WaitingScrollViewオブジェクトを全てコピーして位置調整・名前変更でOKです。

ただし子オブジェクトにある、BoxCollider2Dによる当たり判定をとっているArea_Standbyオブジェクトは削除してOKです。

各種テキストUIオブジェクトを作成する

必要になるのは以下の5種類です。画面中央にはスキルツリーを大きく表示するのでその部分は空け、上下に小さく表示します。

いずれも表示内容はスクリプトから設定するのでSimpleTransitionTextなどは不要です。全てWindowの子オブジェクトとしてTextMeshProで作成していきましょう。

職業名表示テキスト_JobNameText
続きを読む

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

まとめ

これでスキルツリーの画面とシステムの実装が完了しました。動作確認も兼ねて様々な職業スキルを作成してみても良いでしょう。

今の状態から優先してスキル効果の実装などを行いたい方もいるかもしれませんが、ダメージ計算などの際にはこのあと実装する装備品によって式が影響されるので、先にアイテム関連処理の実装に移りたいと思います。

次の記事:

【Unity】3DダンジョンRPGの作り方 第14回|アイテム・装備システムの実装
この記事は3DダンジョンRPGの作り方に講座の第14回目です。前回はアクターの職業ごとにスキルツリーを作成し、街シーンからスキルの習得・レベルアップを行えるようにしました。いわゆるスキルツリーシステムを構築しました。前回の記事:今回はこのゲ...

Unity 3DダンジョンRPGの作り方講座に戻る >>

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

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