You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:15:29