>>20
これを新規のmonovihaviorに貼り付けて、インスペクタからカーブに山なりのカーブを、CardObjには適当なカードのプレハブを、
始点と終点にはそれぞれ空オブジェクトを割り当てて動かしてみてください。始点と終点のY位置は同じ値にしておく方がわかりやすいです。

この例はめちゃくちゃざっくりなので実際にゲームで使うには不十分だと思いますが、カーブとLerpを使って実装するためのヒントにはなるかと・・・

public AnimationCurve curve; //このカーブからY位置に足す値を取得する
public GameObject cardObj; //カードのプレハブ
public Transform startTr; //始点
public Transform endTr; //終点
public int cardNum = 52; //カード枚数

void Start()
{
SpawnCards();
}

void SpawnCards()
{
float step = 1f / (cardNum-1);
for (int i = 0; i < cardNum-1; i++)
{
var offsetY = curve.Evaluate(step * i);
var pos = Vector3.Lerp(startTr.position, endTr.position, step * i);
pos.y += offsetY;
Quaternion q = Quaternion.Lerp(startTr.rotation, endTr.rotation, step * i);
Instantiate(cardObj, pos, q);
}
Instantiate(cardObj, endTr.position, endTr.rotation);
}