はじめに
このページでは、MODを作成する上でのUnityやparts.cfgの設定などについてのノウハウなどを雑多に記述する予定です。
RCSスラスタ
RCSスラスタを作成する場合、最低一個はスラスタの噴射方向をUnity上で定義する必要があります。
- 空のGameObjectを作成し、作成するRCSスラスタのパートの階層下にドラッグアンドドロップで入れて名称をRCSthrusterとします。(名称は後述のpart.cfgで指定する名称と同じであれば別の名称でもかまいません)
- Unityのウィンドウの左上のアイコンをクリックして、下図の通りに設定します。
- RCSthrusterを選択し、マウス操作や、InspectorのTransformの値の入力などで、緑色の矢印がスラスタの噴出する向きになるように設定します。
- 目的のスラスタパートを選択し、"Part Tools (Script)"から"write"で*.muファイルを書き出します。
- part.cfgを開き、MODULEブロックのthrusterTransformNameに先ほどUnityで設定したGameObjectの名称("RCSthruster")を記入します。
MODULE { name = ModuleRCS // スラスタの定義であることを表す thrusterTransformName = RCSthruster // スラスタの噴出方向を定義したGameObject名 thrusterPower = 1 // 推力(kN) resourceName = MonoPropellant // 使用するリソース名(通常このまま) atmosphereCurve { key = 0 260 // 真空中比推力 key = 1 100 // 海面高度比推力 } }
- 複数のノズルがあるスラスタの場合、同じ名称でGameObjectを複数作成し、それぞれTransformの位置・向きを各ノズルに対応させて設定します。
エンジン
以下、特に注釈が無い場合は液体エンジン・固体ロケットモーターなどで共通となります。
噴射方向指定
エンジンの噴射方向も、ほぼRCSスラスタと同じ方法で設定しますので手順はRCSスラスタの項を参照して下さい。ただし以下の点に注意して下さい。
- エンジンの場合、噴射方向は青色の矢印となります。スラスタと同じつもりで設定するとエンジンが横向きに噴射してロケットが横転し、有人機であれば緑の人命が無慈悲に失われることになるでしょう。
- エンジンの場合、デフォルトパーツではオブジェクト名として"thrustTransform"が使用されているので合わせた方がわかりやすいでしょう。
- エンジンの場合、part.cfgの記述は下記に示すとおり、"thrustVectorTransformName"で指定する名称がエンジンの噴射方向を指定するオブジェクト名となります。
MODULE { name = ModuleEngines thrustVectorTransformName = thrustTransform exhaustDamage = False ignitionThreshold = 0.1 minThrust = 0 maxThrust = 10.0 heatProduction = 50 fxOffset = 0, 0, 0.02 PROPELLANT { name = LiquidFuel ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer ratio = 1.1 } atmosphereCurve { key = 0 310 key = 1 100 } }
ジンバル機構(推力偏向)
推力偏向機構をもつエンジンを作る場合、あらかじめモデルを造る際に可動部分と固定部分が別のポリゴンメッシュになるように作成しておきます。そしてUnity上で先の手順と同様にしてthrustTransformオブジェクトを作成しますが、このときthrustTransformの原点を可動部分の基準位置に合わせた上で、thrustTransformオブジェクトの下位階層に可動部分のオブジェクトを入れるようにします。
そしてpart.cfgのMODULEブロックでModuleGimbalを定義します。gimbalRangeはデフォルトパーツでは通常1~3となっています。値を大きくすることで機動性が増しますが、その分制御が難しくなったり、特にASASとの併用で激しい振動が発生するので適宜調整して下さい。
MODULE { name = ModuleGimbal gimbalTransformName = thrustTransform //可動部分を指定するGameObject名 gimbalRange = 2.5 // 可動部分の角度 }
クラスタエンジン
RCSスラスタと同じ要領で複数のthrustTransformオブジェクトを設定することで、クラスタエンジンを作成することが可能です。なお、エンジンの最大推力は「maxThrust*thrustTransformオブジェクトの数」ではなく、maxThrustの値そのものになるので注意して下さい。
段間部
エンジンの下部にパーツを追加したときに設定される段間部のカバーは、part.cfgのModuleJettisonにより実装します。
あらかじめ、モデリングソフトでカバー部分を作成します。このとき、カバー部分を一つのオブジェクト(ここでは"fairing"という名称にします)にまとめておきます。
Unity上で、fairingオブジェクト以下のポリゴンメッシュに"Icon_Hidden"という名前でタグ名を設定します。このタグ名称を設定したパーツは、VABの編集画面のアイコンに表示されなくなります。(なお、このタグ名は下位オブジェクトには継承されないので、fairingオブジェクト以下のポリゴンメッシュ全てに設定する必要があります)
なお、Icon_Hiddenは最初に一度"Add Tag..."→"Tag"→"Element 0"の順で操作してタグ名の追加を行う必要があります。以下の図を参考にして下さい。
最後に、part.cfgにModuleブロックでModuleJettisonを設定します。
MODULE { name = ModuleJettison jettisonName = fairing // フェアリング部分のオブジェクト名 bottomNodeName = bottom isFairing = True jettisonedObjectMass = 0.1 // 分離部分質量 jettisonForce = 5 // 分離時の外力 jettisonDirection = 0 0 1 // 分離方向(x, y, z) }
同様にして、fairingオブジェクトを二つ作成し、それぞれにpart.cfgでModuleJettisonを定義することにより、左右にカバーが展開するエンジンも作成可能です。デフォルトパーツの"LV-N Atomic Rocket Motor"のpart.cfgを参考にして下さい。
コマンドポッド
リソース関連
コマンドポッド自体に燃料タンクのpart.cfgと同じ方法でRESOURCEブロックを追加することで液体燃料や酸化剤、RCSスラスタ用燃料などを搭載させることが可能です。これにより、現実の衛星バスのように内部に燃料を搭載することでパーツ数を削減したり、現実の宇宙機の再現がしやすくなります。なお、燃料を大量に積むとその分重量が増しますのでご注意下さい。
part.cfgの記述のみで設定可能なので、デフォルトパーツをコピーしてカスタマイズすることも簡単です。
RESOURCE { name = MonoPropellant amount = 20 maxAmount = 20 } RESOURCE { name = LiquidFuel amount = 10 maxAmount = 10 } RESOURCE { name = Oxidizer amount = 12.2 maxAmount = 12.2 }
上記のRESOURCE定義を追加したことで、追加の燃料タンクなしで各種燃料が追加されているのがわかります。
コメント
- 作ったパーツくださーい。 -- jr? 2013-06-27 (木) 17:14:56
- Alpha版レベルですがここのKSP UP Loaderに"jpsatmods.zip"として上げたのでどうぞご利用下さい。 -- 2013-06-27 (木) 23:39:42
- ありません -- ASTRO-E2? 2022-02-16 (水) 18:41:50
- ジンバル機構付きのものもください。 -- jr? 2013-07-15 (月) 18:15:55
- Alpha版レベルですがここのKSP UP Loaderに"jpsatmods.zip"として上げたのでどうぞご利用下さい。 -- 2013-06-27 (木) 23:39:42
- MOD作成にトライしている者ですが、もしわかる方がうたらお助けを!Unity 4.2.2Freeの設定、PartTools2.0の導入ともにTutorialに従って問題なくできている筈なのですが、Sceneを保存してUnityを終了、再度Unityを起動してSceneを開くとInspectorのPartTools(Script)セクションからWriteボタンが消滅してしまいます。新しいProjectを作ると出来立てホヤホヤのセクションが出来るのですが、やはり一度Unityを終了するとWriteボタンが消滅するようです。GameDataフォルダやURL、ModelNameの設定に関係なく起こるのですが、誰か問題解決できる情報をお持ちじゃないでしょうか!この間抜けなMOD制作野郎に愛の手を! -- 間抜けMOD制作者? 2013-11-23 (土) 22:36:50
- Unityを再インストールしてみては? -- 2013-12-18 (水) 02:30:54
- パーツじゃなくて、便利ツール作りたい -- 2019-10-31 (木) 09:43:31
- c#が必要 -- 2019-11-19 (火) 11:10:06