アクションゲームのスキルシステム(アビリティシステム)のデザインプロトタイプをUnityで実現

序文

スキル システムを作成してみて、それが可能な限り完璧であることを望みます。現在考えられる要素としては、コントロール、モデル、アニメーション、効果音、特殊効果、当たり判定、イベント応答、ダメージ判定、バフ制御などが考えられます。すべての要素を 1 つのエディターにまとめられるため、企画やアートの運用に便利です。

入力制御

これをInput Systemクロスプラットフォームとして使用して入力応答を受信し、それをCharacterスクリプトに統合し、CharacterイベントOnCharacterEventノードを使用して対応する操作をリッスンします。
ここに画像の説明を挿入

public void AddActionStarted(string actionName,Action<InputAction.CallbackContext> callback)
{
    
    
   GetInputAction(actionName).started += callback;
}
public void AddActionPerformed(string actionName, Action<InputAction.CallbackContext> callback)
{
    
    
   GetInputAction(actionName).performed += callback;
}
public void AddActionCanceled(string actionName, Action<InputAction.CallbackContext> callback)
{
    
    
   GetInputAction(actionName).canceled += callback;
}


private InputAction GetInputAction(string actionName)
{
    
    
   var action = _inputCharacterGamePlay.FindAction(actionName, throwIfNotFound: true);
   return action;
}

スキルエディター

統合ツールとして使用すると、 をスキルに追加Timelineでき、いつでもプレビューできます。具体的な操作については公式チュートリアルを参照してください。1 つはトリガー条件として拡張されており、コンボ アニメーションの接続が可能な限り合理的になるように、一定のトリガー範囲が規定されています。动画特效音效物体控制扩展脚本Scene
ここに画像の説明を挿入
PlayableAssetCombo

キャラクターエディター

複数のスキルを編集した後、すべてのスキルを調整するにはキャラクターエディターが必ず必要になります。スキルプレイのルールを統一し、当たり判定などの一連の操作を行い、キャラクターの操作ロジックを突き詰める。
ここでは、キャラクターのシリーズ情報を保存するのに便利なCharacter継承によってScriptableObject実装されており、CharacterEditorキャラクターの一部の属性、スキル、制御ロジックを編集および保存するために拡張機能が使用されています。
ここに画像の説明を挿入

スキルトリガー

キャラクター エディターでノードを作成しOnCharacterEventSkillノードを作成して接続して、プレイ機能をトリガーします。イベントはInput Systemトリガーをサポートしており、Input Action名前を直接入力することで現在の入力によって返されるパラメーターを取得できます。
ここに画像の説明を挿入

現在のスキルにスキル効果が必要な場合は、コンボを実行することで発動できるTimeline複数のスキルを作成しますOnCombo。マルチコンボアクションは次のとおりです。
ここに画像の説明を挿入

  1. コンボA
    ここに画像の説明を挿入
  2. コンボAA
    ここに画像の説明を挿入
  3. コンボAAA
    ここに画像の説明を挿入

基本的なアニメーション

スキルアニメーションの他にIdle、 、WalkなどJumpの通常のアニメーションもあります。もともと、スキルを使って一連のソリューションを実装したいと思っていましたTimelineが、いつも少し場違いに感じていました。Animatorいくつかの基本的なアニメーションの切り替えをより合理的に行うために、ここでもデフォルトが使用されています。
ここに画像の説明を挿入
に追加された値を入力して戻り値としてInput System使用するmovement、キーボード、Xbox ジョイスティック、およびモバイル仮想ジョイスティックをすべて値にマッピングして、キャラクターを簡単に制御できます。基本アニメーションの表示Input ActionVector2WASDVector2
ここに画像の説明を挿入

ここに画像の説明を挿入

衝撃チェック

ここでは主にキャラクターのブロードソードにコリジョン ボックスをバインドし、Timelineスキル キャスト アニメーションの特定の範囲内でコリジョン ボックスを開くことと組み合わせて、攻撃の衝突をより合理的にしました。また、エディターにテストエネミーを作成するためのショートカットボタンが追加され、Create Enemy
ここに画像の説明を挿入
衝突を検知しながら現在のキャラクターが発動しているスキル情報を取得することができます。敵にダメージ判定を行ったり、ヒットアニメーションを再生したり、BUFFやDEBUFFを付与することができます。
コンボ スキルも別のスキルであるため、各コンボ アクションには独自の属性があり、さまざまなコンボ アニメーションに応じて敵により大きなダメージを与えることができます。
ここに画像の説明を挿入
敵のヒット表示
ここに画像の説明を挿入

バフシステム

Buff主に、キャラクターの属性が常に変更されるタイマー駆動の状態です。これには多くの機能が含まれており、キャラクター自身の属性の一部を変更するだけでなく、キャラクターに対して无敌击飞击退沉默恐惧嘲讽などの他の操作を実行することもできます禁锢キャラクターの再利用率が非常に高い
ここに画像の説明を挿入
ため、ここにプールを設け、キャラクターがスキル攻撃を受けるとその中から1つ取り出し初期化し、現在いるキャラクターを全て巡回して優先順位を決定し、次に、対応するロジックを実行します。タイマーが終了すると、プールにリサイクルされます。継続存在期間中、基本属性+各種要素からキャラクターのリアルタイム属性が合成されます。BuffBuffBuff PoolBuffBuffBuffBuff
BuffBuff

つづく

特定のニーズによっては、スキル システムの複雑さはそれ以上になります。現時点ではまだ設計や完成度が高くない点が多く、ポイントベースの解説となっており、今後も継続的に修正・更新していきます。
このブログはここでの紹介とみなすことができます。

おすすめ

転載: blog.csdn.net/qq992817263/article/details/117661371