MOD作成know-how集

Last-modified: 2022-02-16 (水) 18:41:50

はじめに

このページでは、MODを作成する上でのUnityやparts.cfgの設定などについてのノウハウなどを雑多に記述する予定です。

RCSスラスタ

RCSスラスタを作成する場合、最低一個はスラスタの噴射方向をUnity上で定義する必要があります。

  • 空のGameObjectを作成し、作成するRCSスラスタのパートの階層下にドラッグアンドドロップで入れて名称をRCSthrusterとします。(名称は後述のpart.cfgで指定する名称と同じであれば別の名称でもかまいません)
    modknowhow_rcs_makeobj.png
  • Unityのウィンドウの左上のアイコンをクリックして、下図の通りに設定します。
    modknowhow_rcs_unitytoolhandle.png
  • RCSthrusterを選択し、マウス操作や、InspectorのTransformの値の入力などで、緑色の矢印がスラスタの噴出する向きになるように設定します。
    modknowhow_rcs_setdir.png
  • 目的のスラスタパートを選択し、"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の位置・向きを各ノズルに対応させて設定します。
    modknowhow_rcs_makeobj_multi.png

エンジン

以下、特に注釈が無い場合は液体エンジン・固体ロケットモーターなどで共通となります。

噴射方向指定

エンジンの噴射方向も、ほぼRCSスラスタと同じ方法で設定しますので手順はRCSスラスタの項を参照して下さい。ただし以下の点に注意して下さい。

  • エンジンの場合、噴射方向は青色の矢印となります。スラスタと同じつもりで設定するとエンジンが横向きに噴射してロケットが横転し、有人機であれば緑の人命が無慈悲に失われることになるでしょう。
    modknowhow_engine_setdir.png
  • エンジンの場合、デフォルトパーツではオブジェクト名として"thrustTransform"が使用されているので合わせた方がわかりやすいでしょう。
  • エンジンの場合、part.cfgの記述は下記に示すとおり、"thrustVectorTransformName"で指定する名称がエンジンの噴射方向を指定するオブジェクト名となります。
    part.cfg記述例
    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オブジェクトの下位階層に可動部分のオブジェクトを入れるようにします。

modknowhow_engine_gimbal.png

そしてpart.cfgのMODULEブロックでModuleGimbalを定義します。gimbalRangeはデフォルトパーツでは通常1~3となっています。値を大きくすることで機動性が増しますが、その分制御が難しくなったり、特にASASとの併用で激しい振動が発生するので適宜調整して下さい。

part.cfg記述例
MODULE
{
	name = ModuleGimbal
	gimbalTransformName = thrustTransform //可動部分を指定するGameObject名
	gimbalRange = 2.5	// 可動部分の角度
}

クラスタエンジン

RCSスラスタと同じ要領で複数のthrustTransformオブジェクトを設定することで、クラスタエンジンを作成することが可能です。なお、エンジンの最大推力は「maxThrust*thrustTransformオブジェクトの数」ではなく、maxThrustの値そのものになるので注意して下さい。

modknowhow_engine_cluster.png

段間部

エンジンの下部にパーツを追加したときに設定される段間部のカバーは、part.cfgのModuleJettisonにより実装します。
あらかじめ、モデリングソフトでカバー部分を作成します。このとき、カバー部分を一つのオブジェクト(ここでは"fairing"という名称にします)にまとめておきます。

modknowhow_engine_fairing_object.png

Unity上で、fairingオブジェクト以下のポリゴンメッシュに"Icon_Hidden"という名前でタグ名を設定します。このタグ名称を設定したパーツは、VABの編集画面のアイコンに表示されなくなります。(なお、このタグ名は下位オブジェクトには継承されないので、fairingオブジェクト以下のポリゴンメッシュ全てに設定する必要があります)

modknowhow_engine_fairing_tag.png

なお、Icon_Hiddenは最初に一度"Add Tag..."→"Tag"→"Element 0"の順で操作してタグ名の追加を行う必要があります。以下の図を参考にして下さい。
modknowhow_engine_fairing_addtag1.png modknowhow_engine_fairing_addtag2.png
最後に、part.cfgにModuleブロックでModuleJettisonを設定します。

part.cfg記述例
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の記述のみで設定可能なので、デフォルトパーツをコピーしてカスタマイズすることも簡単です。

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定義を追加したことで、追加の燃料タンクなしで各種燃料が追加されているのがわかります。

modknowhow_pod_resource.png

コメント

  • 作ったパーツくださーい。 (^^) -- 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
  • 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