サンプルプログラム/車輪の一括設定

Last-modified: 2016-06-17 (金) 11:33:59

サスペンション付きホイールブロックの設定項目の数値を直接指定するサンプルです。


サンプルプログラム

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はプロパティ名が不明なのでコメントアウトにしてあります。

項目名の対応

ターミナルでの項目名プロパティ名
SteeringSteeringbool
Steering AngleMaxSteerAnglefloat
Steering SpeedSteerSpeedfloat
Steering Return SpeedSteerReturnSpeedfloat
Invert SteeringInvertSteeringbool
PropulsionPropulsionbool
Invert PropulsionInvertPropulsionbool
PowerPowerfloat
FrictionFrictionfloat
DampingDampingfloat
Height OffsetHeightfloat
Suspension TravelTravelfloat
StrengthStrengthfloat
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);
       }
   }
}

関連項目

コメント