Check-Point

ゲームをリセットすると、システムはプレイヤーの位置を目的の場所にリセットし、プレイヤーの進行状況を保存します。このシステムには 2 つのバージョンがあります。最初のバージョンは合理化されたバージョンで、2 番目は AI システムを使用して構築されました。どちらも機能しますが、より直感的なアプローチである最初のバージョンをお勧めします。

Streamlined version

Check Pointコンポーネントを空のゲームオブジェクトに追加します。次に、追加ボタンをクリックしてトリガーをシーンにドラッグし、レベルにチェックポイントトリガーを追加します。プレイヤーはトリガーの下部中央でリセットされます。

Property
Nameこれは、すべてのシーンに対して一意の名前である必要があります。
TypePriority: チェックポイントのインデックスが現在保存されている値より大きい場合、システムは新しいチェックポイントを保存します。
Any: システムはインデックスに関係なく、任意のチェックポイントを新しいチェックポイントとして受け入れます。
Buttonチェックポイントが「On Button Press」に設定されている場合、この現在のチェックポイントに保存するために押す必要があるボタン。
On Resetプレイヤーがリセットされたときに呼び出される Unity イベント。
On Saveチェックポイントが保存されたときに呼び出される Unity イベント。
Check Point
Indexチェックポイントの優先度インデックス。数値が大きいほど優先度が高くなります。
Positionゲーム ワールド内のチェックポイントの位置。これは、プレイヤーがリセットされる位置です。
Save「Automatic」の場合、新しいチェックポイントはすぐに保存されます。
「On Button Press」の場合、保存するために押す必要があるボタンです。
「Save Manually」の場合、保存するには SaveManually メソッドを呼び出す必要があります。これらのオプションはすべて、プレイヤーがチェックポイント内にいる必要があります。
On Resetプレイヤーがリセットされたときに呼び出される Unity イベント。
On Saveチェックポイントが保存されたときに呼び出される Unity イベント。

AI FSM version

AI バージョンは優れたケーススタディとして役立ち、独自のシステムを作成する方法についてのアイデアを提供します。


このシステムでは、プレイヤーを追跡するための AIFSM と、チェックポイントシステムの状態を保存するための World Float を使用します。

状態を説明する前に、まずシステムの設計方法を見てみましょう。各レベルには、必要な数のチェックポイントを設定できます。この特定のシナリオでは、チェックポイントは 3 つあります。各チェックポイントはゲーム ワールドに配置され、それぞれに対応する任意のインデックスがあります。つまり、1、2、3 です。

プレイヤーがチェックポイント エリア内に入ると、FSM は World Float (保存が有効になります) にインデックスを保存します。World Float の現在の値がチェックポイント インデックスより小さい場合、値が更新されます。つまり、チェックポイント システムは優先順位に基づいて動作します。プレイヤーがチェックポイント 1 内に戻ったが、すでにチェックポイント 2 に行ったことがある場合、システムはチェックポイント 1 に戻りません。また、ゲームをリセットすると、AIFSM は、保存された値とそのインデックスが一致するチェックポイントの目的の場所にプレイヤーを移動します。

チェックポイントはどのようにして互いを認識するのでしょうか?

ワールドフロートは、すべてをまとめる接着剤のようなものです。各チェックポイントにはワールドフロートが付属しており、各ワールドフロートは他のすべてとまったく同じ名前を持つ必要があります。各ワールドフロートが同じ名前を持っている場合、メモリ内の同じ変数に保存されるため、すべて同じデータを参照します。また、同様に重要なのは、ワールドフロートが変更されるたびに、同じ名前を共有する各ワールドフロートに信号が送信され、一致するように値が更新されることです。このブロードキャスト信号が機能するには、各ワールドフロートのブロードキャスト値を有効にする必要があります。これにより、すべてのワールドフロートが同じ値で機能することが保証されます。

Check-Point FSM はどのように機能しますか?

FSM には 3 つの状態があります。
最初の状態 ResetPoint は、ワールド フロートがそのインデックスと一致するかどうかを確認します。一致する場合、状態は Set Transform を使用してプレーヤーの位置をリセットします。これが最初の状態であるため、AI システムはシーンの開始時に常にこの状態を最初に確認します。ゲームをリセットする場合は、設定で Reset To First を有効にします。これにより、AI システムはゲームをリセットすると最初の状態に戻り、プレーヤーの位置をリセットします。

ResetPoint 状態で何が起こっても、システムは待機状態に移行します。ここで、システムは Find Target を使用してプレーヤーが領域に入るまで待機します。プレーヤーが領域に入ると、World Float の現在の値とそのインデックスを比較します。World Float の現在の値が現在のインデックスより小さい場合、システムは Save 状態に移行し、インデックスを World Float に保存してから、Wait 状態に戻ります。

Wait 状態は Sequence Succeeded に設定されていることに注意することが重要です。つまり、Find Target が成功を返すまで状態は World Float Logic をチェックしません。

Important
変更する必要がある部分: Set Transform で、リセット位置を入力します。各 World Float Logic と On Event で、チェックポイントのインデックスを配置します。また、各チェックポイントごとに、シーン内の各領域 (緑の四角形) を手動で移動する必要があります。

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