如何调整Unity LineRenderer的曲线朝向?现有曲线向下需反转
修改方法(超简单,适合编程新手)
你只需要改两处地方,就能让曲线反向弯曲:
1. 修正Point2的Z坐标计算错误
原代码里Point2的Z坐标写成了乘2,这会让Point2的位置严重偏离Point1和Point3的中间点,导致曲线变形。把它改成除以2,和X坐标的计算方式保持一致:
// 原错误代码 Point2.transform.position = new Vector3((Point1.transform.position.x + Point3.transform.position.x)/2, Point2Ypositio, (Point1.transform.position.z + Point3.transform.position.z) *2); // 修改后代码 Point2.transform.position = new Vector3((Point1.transform.position.x + Point3.transform.position.x)/2, Point2Ypositio, (Point1.transform.position.z + Point3.transform.position.z)/2);
2. 反转曲线弯曲方向
把控制Point2高度的Point2Ypositio值改成负数就行(比如从2改成-2)。如果不想改变量,也可以直接在代码里给Y值加负号:
// 修改后(直接取反Y值) Point2.transform.position = new Vector3((Point1.transform.position.x + Point3.transform.position.x)/2, -Point2Ypositio, (Point1.transform.position.z + Point3.transform.position.z)/2);
完整修改后的代码
这里给你整理好的完整代码,直接替换原文件即可:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DrawLineRenderer : MonoBehaviour { public Transform Point1; public Transform Point2; public Transform Point3; public LineRenderer linerenderer; public float vertexCount = 12; public float Point2Ypositio = 2; // 这里直接改成负数(比如-2)也能达到效果 void Start() { linerenderer.SetWidth(10, 10); } public void buttonPress() { // 修正Z坐标计算,并反转Y方向 Point2.transform.position = new Vector3( (Point1.transform.position.x + Point3.transform.position.x)/2, -Point2Ypositio, // 加负号直接反转弯曲方向 (Point1.transform.position.z + Point3.transform.position.z)/2 // 把*2改为/2修正位置 ); var pointList = new List<Vector3>(); for(float ratio = 0; ratio <= 1; ratio += 1/vertexCount) { var tangent1 = Vector3.Lerp(Point1.position, Point2.position, ratio); var tangent2 = Vector3.Lerp(Point2.position, Point3.position, ratio); var curve = Vector3.Lerp(tangent1, tangent2, ratio); pointList.Add(curve); } linerenderer.positionCount = pointList.Count; linerenderer.SetPositions(pointList.ToArray()); } }
额外说明
- 调整
Point2Ypositio的绝对值大小,可以改变曲线的弯曲幅度,数值越大,弯曲得越明显 - 原代码绘制的是二次贝塞尔曲线,弯曲方向完全由中间点Point2的位置决定,把Point2挪到原来的Y轴反方向,曲线自然就会反向弯曲
内容的提问来源于stack exchange,提问作者Savad
相关产品推荐
相关产品推荐

