ControllerManager インスタンスは、割り当てられた RootPart にシミュレーションモーションコントロールを管理します。以下の ControllerPartSensors と一緒に使用すると、物理ベースのキャラクターコントローラーを構築できます。
コアの設定
ControllerManager はルートとして使用する BasePart が必要です。移動力と部品感知がこの部分にあります。
パーツをグループ化して、他のコンポーネントと一緒に組織に対する Model インスタンスとしてグループ化します。
モデルに ControllerManager インスタンスを追加します。 コントローラーマネージャー がオブジェクト挿入メニューに最初に表示されない場合、メニューの 挿入設定 で「推奨オブジェクトのみを表示」を チェック解除 します。
センサー設定
A は、フロアとはしごの検出に使用する同じコードを持つパーツを検出します。
ControllerPartSensor を挿入し、 ルートパーツ の子として挿入し、名前を グラウンドセンサー に変更して、目的を識別しやすくします。次に、プロパティ ウィンドウで、その SearchDistance プロパティを 2 に設定し、その SensorMode を フロア として残します。
別の ControllerPartSensor を挿入し、 ルートパーツ の子として挿入し、名前を クライムセンサー に変更します。次に、プロパティ ウィンドウで、その SearchDistance プロパティを 1 に設定し、その SensorMode を はしご に設定します。
コントローラーの設定
GroundController や ClimbController のようなコントローラーインスタンスは、センサー設定 中に設定したセンサーと協力して、世界との対話方法を管理部分に伝えます。
両方の GroundController と ClimbController を挿入し、ControllerManager の子として。
新しい GroundController インスタンスを選択し、プロパティ ウィンドウで、管理されたパーツが地上で「浮かぶ」べき値に GroundOffset プロパティを設定します。この値が 少なくなる より SearchDistance の値よりも小さいことが重要です、グラウンドセンサー では、そのセンサーが地面の感覚を失い、効果的に部品の力を停止すると、そのセンサーは無効になります。
リンク参照
コアの設定を完了するには、ControllerManager インスタンスの様々なプロパティをメインの Model 内のオブジェクトにリンクする必要があります。
Select the ControllerManager.
プロパティ ウィンドウで、次のプロパティのそれぞれをクリックし、エクスプローラー ウィンドウに戻って、リンクを完了するためにそれぞれのインスタンスをクリックします。
- ActiveController プロパティを グラウンドコントローラーインスタンス にリンクします。
- RootPart プロパティを、 RootPart という名前のパーツにリンクします。
- ClimbSensor プロパティを 登山センサー インスタンスにリンクします。
- GroundSensor プロパティを グラウンドセンサーインスタンス にリンクします。
テスト
センサーとコントローラーが配置され、リンクされた参照がある状態で、Studioでコントローラーをテストできます。
このシナリオにアバターキャラクターを挿入する必要がないので、 実行 モードを使用してプレイテストを開始します (F8)
ルートパーツ は、GroundController.GroundOffset で設定した値で地上を浮かせる必要があります。コントローラーの追加。また、ControllerManager.FacingDirection ベクトルと一致するように回転する必要があります。
ランタイム中に MovingDirection および FacingDirection ベクトルを変更して、異なる動作と方向を試す ControllerManagerまた、GroundController インスタンスの異なるプロパティを試してみてください、例えば AccelerationTime 、 DecelerationTime 、および GroundOffset 。
コントローラーマネージャ グラウンドコントローラー
カスタムセンサー
The ControllerPartSensor.SensorMode オプションの Floor と Ladder は、正確な Humanoid センサーコードを実行し、後方互換性のために使用できます。しかし、歩行可能で登り可能なパーツがどのように検出され、いつ検出されるかをカスタマイズすることもでき、最終的に管理されるパーツが歩行/登るときを変更することもできます。
切り替え ControllerPartSensor.UpdateType を オンリード から マニュアル に。
- オンリード は、読み込みごとに対応する出力プロパティを更新するトリガーを発動します。基本的に、これらのプロパティに書いたものは、内部のセンシング動作によって上書きされ、書き込んだものがすべて消去されます。
- マニュアル は、内部感知行動をオフにします。出力プロパティは、好きなように書いても構いませんが、SensorMode は何もしません。
自分のセンシングロジックを実行し、出力をセンサー出力プロパティに書き込むスクリプトを作成します。通常、WorldRoot:Raycast() または WorldRoot:Blockcast() のような空間クエリを使用し、RaycastResult を返します。スクリプトは結果プロパティを取得し、センサーの同等に設定できます:
クエリの実行頻度とセンサーインスタンスの更新頻度を管理する必要があることに注意してください。
ControllerManager は割り当てられたセンサーを引き続き使用し、パスしたデータを受け取ります。