unity开发之Line Renderer

Line Renderer 是一个有用的工具,可让您在游戏中绘制线条。 它可以用作游戏的函数或调试标记。 在这里,让我们创建一个程序,根据基本用法在 Line Renderer 上移动。
目录

如何使用 Line Renderer 和基础知识

首先,我们来基本学习如何使用它。

在场景中放置 Line Renderer

首先,调用 Line Renderer 以便在游戏中使用它的过程。

  • GameObjectMenuHierarchy 菜单。 ... 更多 在 Effects>Line 中创建
  • 将 Component>Line Renderer 添加到空游戏对象

进行初始设置的最简单方法是通过 Effects。

关键组件属性

您应该了解一些属性。 如果您不知道可以在检查器中设置什么,您可能会感到困惑,因此我将向您介绍。

财产 效果等
场景工具 您可以增加用于在 Line Renderer 中编辑线条的工具 点数量。
位置 如果组成线的每个点的坐标可以确认为 2021 或更高,则可以通过拖放来交换顶点编号。
宽度 调整直线的粗细,使用 Animation Curve 控制 从尖端到末端的粗细
颜色 颜色
拐角顶点 直线接头的曲线可以平滑。 数字越大,越平滑,但网格数也会相应增加
End Cap Vertices(结束端顶点) 在起点和终点处可以 四舍五入的数字越多,它就会越平滑,但网格的数量会相应地增加
使用世界空间 如果选中,它将是一个绝对坐标系
材料 材料
Order In Layer 渲染上下文排序 层

如何添加顶点

我认为这可能是最简单的。

  • 在 Scene Tools 中选择 "+" 按钮
    • 您将处于顶点追加模式
    • 输入:鼠标位置
  • 单击场景中要添加顶点的位置。
  • 完成添加顶点
    • 再次按下 "+" 按钮可取消顶点添加模式


如何在 Input 中使用 Physics Raycast?

Physics Raycast 为凹凸不平的碰撞箱和其他内容创建顶点。 当您想要从地板到墙壁划线时,这很有用。

编辑您提出的观点

您创建的顶点也会在场景视图中进行编辑。 如果要进行精细的数值调整,请从 Positions (位置) 调整值。

  • 在 Scene Tools 中选择看起来像破损的串饺的图标
    • 进入顶点编辑模式(适合名称)
  • 选择要移动的顶点
    • 左键单击顶点上的黄点
    • 验证是否显示 MoveTool 箭头
  • 移动到要更改的位置
  • 顶点编辑模式退出
    • 再次选择串饺
    • 即使选择完全不同的游戏对象,它也将被取消

奖励:LineMover

从这里开始,我将介绍一些使用 Liner Renderer 的有用功能。 介绍通过跟踪您创建的线路来移动的程序

LineMover 脚本

在下面的脚本中,附加到 LineMover 的游戏对象沿 Line 移动。 逻辑是以 speed 设置的速度向下一个点移动。

  • 将其粘贴到要在行上移动的游戏对象中
  • 设置要移动到 Inspector 的 Line Renderer。
  • 当您玩 Unity 时,它会独立工作
    • 如果要调整速度,请增加或减少 speed 的值。
cs 复制代码
using UnityEngine;
using System;

public class LineMover : MonoBehaviour
{
    [SerializeField] private LineRenderer lineRenderer;
    [SerializeField] private float speed = 1f;

    private int currentIndex;
    public EventHandler OnEndReached;

    private void Start()
    {
        Initialize(0,speed,lineRenderer);
    }
    public void Initialize(int index, float speed, LineRenderer lineRenderer)
    {
        enabled = true;
        currentIndex = index;
        this.speed = speed;
        this.lineRenderer = lineRenderer;
        transform.position = this.lineRenderer.GetPosition(currentIndex);
    }

    public static (Vector3 targetPosition, bool isEnd) GetTargetPosition(ref int index, float moveSpeed, Vector3 currentPosition, LineRenderer lineRenderer)
    {
        int nextIndex = index + 1;

        if (lineRenderer.positionCount <= nextIndex)
        {
            return (lineRenderer.GetPosition(index)+ lineRenderer.transform.position, true);
        }
        var nextPosition = lineRenderer.GetPosition(nextIndex) + lineRenderer.transform.position;

        float distance = Vector3.Distance(currentPosition, nextPosition);

        if (distance < moveSpeed)
        {
            index += 1;
            return GetTargetPosition(ref index, moveSpeed - distance, nextPosition, lineRenderer);
        }
        else
        {
            Vector3 direction = (nextPosition - currentPosition).normalized;
            return (currentPosition + direction * moveSpeed, false);
        }
    }
    private void Update()
    {
        var result = GetTargetPosition(
            ref currentIndex,
            speed * Time.deltaTime,
            transform.position,
            lineRenderer);
        transform.position = result.targetPosition;
        if (result.isEnd)
        {
            OnEndReached?.Invoke(this, EventArgs.Empty);
            enabled = false;
        }
    }
}

如果要接收 move completed,可以通过接收 OnEndReached 的 EventHandler 来检查它。该程序可能需要根据应用程序进行更改。

由于上述程序只更新 transform.position,所以如果想结合物理行为,需要使用 Rigidbody MovePosition 什么的。 顺便说一句,同样的东西也被用来移动寿司游戏的盘子。

本文章来源Line Renderer 的基本使用方法和沿线移动的过程 Unity | 如何制作该游戏网页版

相关推荐
郝学胜-神的一滴5 小时前
AI 编程智能体 22:解析器赋能与实战落地全指南
人工智能·程序人生·游戏·unity·游戏引擎
BuHuaX9 小时前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
燃烧的枫9 小时前
Windows 下 YOLO11 Pose 的 TensorRT C++ 部署
windows·yolo·tensorrt·1024程序员节·yolo11-pose
AI日报派送佬10 小时前
2026年11月02日 AI 行业日报|商汤开源 Loop-9B、Pika 发布 H3 Flex 音视频模型、Meta× 傅利叶推出人形机器人 Max
人工智能·微软·开源·音视频·openai·1024程序员节·ai日报
avi911111 小时前
【AI教人】UnityEditor扩展Spine动画,Spine骨骼,预览Preview一切
spine·骨骼动画·1024程序员节·editor扩展·spine动画·spine骨骼
开开心心就好11 小时前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
Martina_03211 天前
AI生成的3D模型打印后沿层纹开裂?用6步检查方向、壁厚与填充
图像处理·人工智能·数学建模·3d·自然语言处理·游戏策划·1024程序员节
c_hn_0071 天前
量化数据12:国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载
数据库·1024程序员节·#深度订单簿数据·#历史行情订单薄·#本地csv数据存储
释厄6231 天前
同性线套娃律——圆面积必然=1+2+...+n 的求和·圆心不与 π 相关
java·人工智能·算法·1024程序员节
在所不辞兄1 天前
【零基础学智能仿真-69】综合项目——材料参数驱动的仿真研究
人工智能·深度学习·神经网络·算法·机器学习·1024程序员节