キャラクタコントローラー

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ControllerManager インスタンスは、割り当てられた RootPart にシミュレーションモーションコントロールを管理します。以下の ControllerPartSensors と一緒に使用すると、物理ベースのキャラクターコントローラーを構築できます。

コアの設定

ControllerManager はルートとして使用する BasePart が必要です。移動力と部品感知がこの部分にあります。

  1. Choose a Part または MeshPart と名前を付け、それを ルートパーツ と呼びます。

  2. パーツをグループ化して、他のコンポーネントと一緒に組織に対する Model インスタンスとしてグループ化します。

  3. モデルに ControllerManager インスタンスを追加します。 コントローラーマネージャー がオブジェクト挿入メニューに最初に表示されない場合、メニューの 挿入設定 で「推奨オブジェクトのみを表示」を チェック解除 します。

    ControllerManager and RootPart inside a model.

センサー設定

A は、フロアとはしごの検出に使用する同じコードを持つパーツを検出します。

  1. ControllerPartSensor を挿入し、 ルートパーツ の子として挿入し、名前を グラウンドセンサー に変更して、目的を識別しやすくします。次に、プロパティ ウィンドウで、その SearchDistance プロパティを 2 に設定し、その SensorModeフロア として残します。

    GroundSensor as child of RootPart
  2. 別の ControllerPartSensor を挿入し、 ルートパーツ の子として挿入し、名前を クライムセンサー に変更します。次に、プロパティ ウィンドウで、その SearchDistance プロパティを 1 に設定し、その SensorModeはしご に設定します。

    ClimbSensor as child of RootPart

コントローラーの設定

GroundControllerClimbController のようなコントローラーインスタンスは、センサー設定 中に設定したセンサーと協力して、世界との対話方法を管理部分に伝えます。

  1. 両方の GroundControllerClimbController を挿入し、ControllerManager の子として。

    GroundController and ClimbController as children of ControllerManager.
  2. 新しい GroundController インスタンスを選択し、プロパティ ウィンドウで、管理されたパーツが地上で「浮かぶ」べき値に GroundOffset プロパティを設定します。この値が 少なくなる より SearchDistance の値よりも小さいことが重要です、グラウンドセンサー では、そのセンサーが地面の感覚を失い、効果的に部品の力を停止すると、そのセンサーは無効になります。

リンク参照

コアの設定を完了するには、ControllerManager インスタンスの様々なプロパティをメインの Model 内のオブジェクトにリンクする必要があります。

  1. Select the ControllerManager.

    ControllerManager selected in Explorer window.
  2. プロパティ ウィンドウで、次のプロパティのそれぞれをクリックし、エクスプローラー ウィンドウに戻って、リンクを完了するためにそれぞれのインスタンスをクリックします。

    1. ActiveController プロパティを グラウンドコントローラーインスタンス にリンクします。
    2. RootPart プロパティを、 RootPart という名前のパーツにリンクします。
    3. ClimbSensor プロパティを 登山センサー インスタンスにリンクします。
    4. GroundSensor プロパティを グラウンドセンサーインスタンス にリンクします。
    ControllerManager properties linked to instances within overall model

テスト

センサーコントローラーが配置され、リンクされた参照がある状態で、Studioでコントローラーをテストできます。

  1. このシナリオにアバターキャラクターを挿入する必要がないので、 実行 モードを使用してプレイテストを開始します (F8)

    Rapid playtest options in Studio.
  2. ルートパーツ は、GroundController.GroundOffset で設定した値で地上を浮かせる必要があります。コントローラーの追加。また、ControllerManager.FacingDirection ベクトルと一致するように回転する必要があります。

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. ランタイム中に MovingDirection および FacingDirection ベクトルを変更して、異なる動作と方向を試す ControllerManagerまた、GroundController インスタンスの異なるプロパティを試してみてください、例えば AccelerationTimeDecelerationTime 、および GroundOffset

    ControllerManager properties for moving and facing direction are highlighted.
    コントローラーマネージャ
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    グラウンドコントローラー

カスタムセンサー

The ControllerPartSensor.SensorMode オプションの FloorLadder は、正確な Humanoid センサーコードを実行し、後方互換性のために使用できます。しかし、歩行可能で登り可能なパーツがどのように検出され、いつ検出されるかをカスタマイズすることもでき、最終的に管理されるパーツが歩行/登るときを変更することもできます。

  1. 切り替え ControllerPartSensor.UpdateTypeオンリード から マニュアル に。

    • オンリード は、読み込みごとに対応する出力プロパティを更新するトリガーを発動します。基本的に、これらのプロパティに書いたものは、内部のセンシング動作によって上書きされ、書き込んだものがすべて消去されます。
    • マニュアル は、内部感知行動をオフにします。出力プロパティは、好きなように書いても構いませんが、SensorMode は何もしません。
  2. 自分のセンシングロジックを実行し、出力をセンサー出力プロパティに書き込むスクリプトを作成します。通常、WorldRoot:Raycast() または WorldRoot:Blockcast() のような空間クエリを使用し、RaycastResult を返します。スクリプトは結果プロパティを取得し、センサーの同等に設定できます:

    クエリの実行頻度とセンサーインスタンスの更新頻度を管理する必要があることに注意してください。

  3. ControllerManager は割り当てられたセンサーを引き続き使用し、パスしたデータを受け取ります。