3の手順だけちょっと複雑になるのでコード置いておきます。(動作確認はしてないのでミスってたらごめんなさい)
------------------------------------------------
以下はメンバ変数定義に書いてください。

//引き寄せる力
public float intensity = 10;
//引き寄せる最大距離
public float maxDistance = 10;
//自分のRigidbody
public Rigidbody myRigidbody;
------------------------------------------------
以下はFixedUpdateの中の3の処理(otherRigidbodyは2で取得した相手のRigidbodyが代入されてるものとする)

//座標の差分を計算
Vector3 diff = (otherRigidbody.position - myRigidbody.position);
//距離を計算
float distance = diff.magnitude;
//距離を0~1の範囲で正規化する(ついでに0~1の範囲外を捨てる)
float normalizedDistance = Mathf.Clamp01(distance / maxDistance);
//近くの時力が強くなるようにしたいので反転する
normalizedDistance = 1.0f - normalizedDistance;
//磁力は距離の二乗に反比例して減衰する
normalizedDistance = normalizedDistance * normalizedDistance;
//力の向きを計算
Vector3 direction = diff.normalized;
//力を計算する(向き*大きさ)
Vector3 force = direction * (normalizedDistance * intensity);

どうしても無理ってなったらまた聞いてください。