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] | 如何制作该游戏网页版

相关推荐
★YUI★4 小时前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
SmalBox4 小时前
【渲染流水线】[光栅阶段]-[光栅插值]以UnityURP为例
unity·渲染
谷宇.4 小时前
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
游戏·unity·c#·游戏程序·unity3d·游戏开发·游戏编程
NRatel1 天前
亚马逊S3的使用简记(游戏资源发布更新)
游戏·unity·amazon s3
SmalBox1 天前
【渲染流水线】[几何阶段]-[屏幕映射]以UnityURP为例
unity·渲染
SmalBox2 天前
【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
unity·渲染
SmalBox3 天前
【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
unity·渲染
霜绛3 天前
Unity:GUI笔记(一)——文本、按钮、多选框和单选框、输入框和拖动条、图片绘制和框绘制
笔记·学习·unity·游戏引擎
谷宇.4 天前
【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
游戏·unity·c#·unity3d·游戏开发·游戏编程
17岁的勇气4 天前
Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
笔记·学习·unity·图形渲染·顶点着色器·曲面着色器