代码挂载空物体上即可
//起始位置 begin为起始目标点
Vector3 beginpos = begin.transform.position + begin.transform.forward;
//结束点
Vector3 endpos;
Vector3 pos = Vector3.Lerp(beginpos, endpos, 0.5f) + Vector3.up * 2;
Vector3[] posarr = new Vector3[] { beginpos, pos, endpos };
DOTween.To((t) => {
effect.transform.position = BessICurve(posarr, t);
},0,1,skill.casttime);
private Vector3 BessICurve(Vector3[] pos, float t)
{
Vector3[] arr = new Vector3[pos.Length - 1];
for (int i = 0; i < arr.Length; i++)
{
arr[i] = pos[i] * (1 - t) + pos[i + 1] * t;
Debug.DrawLine(pos[i], pos[i + 1], Color.red);
}
if (arr.Length==1)
{
return arr[0];
}
else
{
return BessICurve(arr, t);
}
}