改造パーツを作成するにあたって、まずはゲーム内で使用できるアイテムの作成からやってみる。
左の画像のように、インポートしたメッシュに、Mesh Collider と Rigidbody のコンポーネントを追加する。当たり判定を有効するには、Mesh Collider の Convexをオン、Rigidbody の Is Kinematic オフとする。
Tag をPART、Layer をParts とするとアイテムとして認識される。スクリプトでは名前指定となるが、Unity Editor ではリストの並び番号で指定する形になる。あとで対応表をつくろう。GameObject 名に (itemx) を含めると、アイテムに視点をあわせるた時に名前が表示されるようになる。
using MSCLoader;
using UnityEngine;
namespace box
{
public class box : Mod
{
public override string ID => "box"; //Your mod ID (unique)
public override string Name => "box"; //You mod name
public override string Author => "Your Username"; //Your Username
public override string Version => "1.0"; //Version
public override bool UseAssetsFolder
{
get
{
return true;
}
}
public override void OnLoad()
{
this.ab = LoadAssets.LoadBundle(this, "box.unity3d");
this.box1 = this.ab.LoadAsset("box.prefab") as GameObject;
this.ab.Unload(false);
this.box1 = Object.Instantiate<GameObject>(this.box1);
//(itemx)とすると、アイテム名が表示される(詳細不明)
this.box1.name = "testbox(itemx)";
//アイテムと認識させる為の設定(Unity Editorでも設定可)
this.box1.layer = LayerMask.NameToLayer("Parts");
this.box1.tag = "PART";
//アイテムの初期位置
this.box1.transform.localPosition = new Vector3(-18.85804f, -0.5740709f, 11.78144f);
this.box1.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
this.box1.transform.localScale = new Vector3(1, 1, 1);
}
private AssetBundle ab;
private GameObject box1;
}
}