磁石modは、Besiegeに便利な磁石を追加するものである。 磁石の記述はinterfaceとして実装したうえでモジュール化する。
磁性ブロックは以下のように示されるクーロンの法則に従う。
ここで、
計算量の増大を防ぐため、クーロンの法則が適用されるブロックの距離の最大値
public interface IMonopole
{
// 極の位置を取得する
public Vector3 GetPolePosition();
// 磁気量を取得する
public float GetCharge();
// 磁力を計算する
public float GetForce(Monopole other);
}
public class Monopole : CustomModule, IMonopole
{
protected Transform m_pole;
public Vector3 GetPolePosition() => m_pole.position;
protected float m_charge;
public float GetCharge() => m_charge;
public float GetForce(Monopole other)
{
// 仕様通りに実装する
}
// 毎フレーム呼ばれる関数にAddForceを追加しておくこと
public void Update()
{
}
}単極子(monopole)を想定する。
- テスト用磁石
- 天然磁石 常に磁性を持つ
- 電磁石 キー入力時に磁性を持つ
実装未定。