效果展示:
实现如下:
首先,直接上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineFourRender : MonoBehaviour
{
public Transform StartNode;
public Transform MidNode1;
public Transform MidNode2;
public Transform EndNode;
public int vertexCount = 10;
LineRenderer lineRen;
private void Start()
{
lineRen = GetComponent<LineRenderer>();
}
private void Update()
{
List<Vector3> pointList = new List<Vector3>();
for (float ratio = 0; ratio <= 1; ratio += 1.0f / vertexCount)
{
if (lineRen.useWorldSpace)
{
Vector3 tangentLineVertex1 = Vector3.Lerp(StartNode.position, MidNode1.position, ratio);
Vector3 tangentLineVectex2 = Vector3.Lerp(MidNode1.position, MidNode2.position, ratio);
Vector3 tangentLineVectex3 = Vector3.Lerp(MidNode2.position, EndNode.position, ratio);
Vector3 bezierPoint1 = Vector3.Lerp(tangentLineVertex1, tangentLineVectex2, ratio);
Vector3 bezierPoint2 = Vector3.Lerp(tangentLineVectex2, tangentLineVectex3, ratio);
Vector3 bezierPoint = Vector3.Lerp(bezierPoint1, bezierPoint2, ratio);
pointList.Add(bezierPoint);
}
else
{
Vector3 tangentLineVertex1 = Vector3.Lerp(StartNode.localPosition, MidNode1.localPosition, ratio);
Vector3 tangentLineVectex2 = Vector3.Lerp(MidNode1.localPosition, MidNode2.localPosition, ratio);
Vector3 tangentLineVectex3 = Vector3.Lerp(MidNode2.localPosition, EndNode.localPosition, ratio);
Vector3 bezierPoint1 = Vector3.Lerp(tangentLineVertex1, tangentLineVectex2, ratio);
Vector3 bezierPoint2 = Vector3.Lerp(tangentLineVectex2, tangentLineVectex3, ratio);
Vector3 bezierPoint = Vector3.Lerp(bezierPoint1, bezierPoint2, ratio);
pointList.Add(bezierPoint);
}
}
if (lineRen.useWorldSpace)
{
pointList.Add(EndNode.position);
}
else
{
pointList.Add(EndNode.localPosition);
}
lineRen.positionCount = pointList.Count;
lineRen.SetPositions(pointList.ToArray());
// Draw(StartNode.position,EndNode.position,GetComponent<MeshRenderer>(),0.015).transform.SetParent(this.transform);
}
}
接下来,把LineFourRender.cs拖拽上去:
注意:VertexCount参数决定了绳子的丝滑程度,该值越大,绳子越丝滑。
最后是对LineRenderer组件和绳子材质的调整:
附一张绳子贴图: