サスペンション付きホイールブロックの設定項目の数値を直接指定するサンプルです。
サンプルプログラム
public void Main(string argument){ List<IMyTerminalBlock> targets = new List<IMyTerminalBlock> (); GridTerminalSystem.GetBlocksOfType<IMyMotorSuspension>(targets);
for (int i = 0; i < targets.Count; i++) { if (argument.Length == 0 || targets[i].CustomName.Contains(argument)){ targets[i].SetValueBool("Steering", true); targets[i].SetValueFloat("MaxSteerAngle", 0.32f); targets[i].SetValueFloat("SteerSpeed", 1.0f); targets[i].SetValueFloat("SteerReturnSpeed", 1.0f); targets[i].SetValueBool("InvertSteering", false); targets[i].SetValueBool("Propulsion", true); targets[i].SetValueBool("InvertPropulsion", false); targets[i].SetValueFloat("Power", 10.0f); targets[i].SetValueFloat("Friction", 40.0f); targets[i].SetValueFloat("Damping", 1.2f); targets[i].SetValueFloat("Height", 0.0f); targets[i].SetValueFloat("Travel", 100.0f); targets[i].SetValueFloat("Strength", 0.0f); // Float?: Speed Limit 360.0f } } }
argumentが空なら全ての、空でなければArgumentに入れた文字列を名前に含む、サスペンション付きホイールの数値を直接設定します。
実際に使用する際には適宜、任意の数値を設定したり、変更しない項目を削除したりしてください。
- 例えば前輪は「Front」、後輪は「Rear」とブロックの名前に入れておいて、argumentにそれを入れることでそれらのみ設定するような使い方ができます。
- Steering Angle、Speed Limitはプロパティ名が不明なのでコメントアウトにしてあります。
項目名の対応
ターミナルでの項目名 | プロパティ名 | 型 |
---|---|---|
Steering | Steering | bool |
Steering Angle | MaxSteerAngle | float |
Steering Speed | SteerSpeed | float |
Steering Return Speed | SteerReturnSpeed | float |
Invert Steering | InvertSteering | bool |
Propulsion | Propulsion | bool |
Invert Propulsion | InvertPropulsion | bool |
Power | Power | float |
Friction | Friction | float |
Damping | Damping | float |
Height Offset | Height | float |
Suspension Travel | Travel | float |
Strength | Strength | float |
Speed Limit | 不明 |
用途別改造版置き場
前輪操舵・前輪駆動にする
- 名前にFrontと付いた車輪のみステアリングと駆動をオンにし、ほかの車輪はオフにします。
public void Main(string argument){ List<IMyTerminalBlock> targets = new List<IMyTerminalBlock> (); GridTerminalSystem.GetBlocksOfType<IMyMotorSuspension>(targets);
for (int i = 0; i < targets.Count; i++) { if (targets[i].CustomName.Contains("Front")){ targets[i].SetValueBool("Steering", true); targets[i].SetValueBool("Propulsion", true); }else { targets[i].SetValueBool("Steering", false); targets[i].SetValueBool("Propulsion", false); } } }