unity开发之Line Renderer

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

目录
  • 如何使用 Line Renderer 和基础知识
    • 在场景中放置 Line Renderer
    • 关键组件属性
    • 如何添加顶点
    • 编辑您提出的观点
  • 奖励:LineMover
    • LineMover 脚本
    • 该程序可能需要根据应用程序进行更改。

如何使用 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 的值。
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] | 如何制作该游戏网页版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Catalan数 C++解决

输入描述 输入一个正整数n。 输出描述 输出Catalan数的前n项。 用例输入 1 0 用例输出 1 1 用例输入 2 5 用例输出 2 1 1 2 5 14 42 #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int dp[n1]{0};dp[0]dp[1]1;for(int m2;…

守护头顶安全——AI高空抛物监测,让悲剧不再重演

在城市的喧嚣中&#xff0c;我们享受着高楼林立带来的便捷与繁华&#xff0c;却往往忽视了那些隐藏在高空中的危险。近日&#xff0c;震惊全国的高空抛物死刑案件被最高院核准并执行。案件中被告人多次高空抛物的举动&#xff0c;夺去了无辜者的生命&#xff0c;也让自己付出了…

Go 语言中的 for range 循环教程

在 Go 语言中&#xff0c;for range 循环是一个方便的语法结构&#xff0c;用于遍历数组、切片、映射和字符串。本教程将通过示例代码来帮助理解如何在 Go 中使用 for range 循环。 package mainimport "fmt"func main() {// 遍历切片并计算和nums : []int{2, 3, 4}…

Kafka-代码示例

一、构建开发环境 File > New > Project 选择一个最简单的模板 项目和坐标命名 配置maven路径 添加maven依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --><dependency><groupId>org.apache.kaf…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数&#xff0c;用于计算两个数组的点积&#xff08;也称为内积或数量积&#xff09;。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数&#xff0c;用于生成符合正态分布&#xff08;也称为高斯分布&#xff09;的…

项目管理软件中这6个小技巧帮助项目经理同时管理多个项目

在网上看到一个数据&#xff0c;只有15%的项目经理一次只需要负责一个项目&#xff0c;其他的项目经理都需要同时负责多个项目&#xff0c;甚至有15%的项目经理一次需要负责10个以上的项目。 我在工作中&#xff0c;也只有很少很少的时间里&#xff0c;是一次性只负责一个项目…

目标检测——yolov5-3.1的环境搭建和运行

第一步&#xff1a;安装anaconda环境&#xff0c;并且配置好cuda&#xff0c;安装需要的基本包 查看对应cuda版本&#xff0c;后续下载cudatoolkit需要对应版本 nvcc -V 第二步&#xff1a;创建虚拟环境&#xff0c;激活环境&#xff0c;安装所需的包 conda create -n yolo…

Visual studio 下载安装

1&#xff0c;Visual stutdio 网址 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 2&#xff0c;下划页面&#xff0c;点击 较早的下载 3&#xff0c;选择对应的版本进行下载

《深度学习》YOLO v1网络架构 、损失值、NMS极大值抑制

目录 一、Yolo系列v1 1、核心思想 2、示例 3、流程图解析 二、YOLO系列v1损失函数 1、位置误差 2、置信度误差 3、类别概率损失 三、NMS非极大值抑制 1、概念 2、步骤 四、YOLO v1优缺点 1、优点 1&#xff09;速度快 2&#xff09;端到端 3&#xff09;多尺度…

docker 可用镜像服务地址(2024.10.25亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因&#xff1a;镜像服务器地址不可用。 2.可用地址 编辑daemon.json&#xff1a; vi /etc/docker/daemon.json内容修改如下&#xff1a; {"registry-mirrors": ["https://…

光伏业务管理软件:提升企业管理效率的利器

一、优化业务流程 光伏业务管理软件能够对企业的各项业务流程进行全面梳理和优化。从项目前期的规划设计、设备采购&#xff0c;到项目建设中的施工管理、质量控制&#xff0c;再到项目后期的运维服务&#xff0c;软件都可以进行有效的跟踪和管理。 通过规范业务流程&#xf…

银行客户贷款行为数据挖掘与分析

#1024程序员节 | 征文# 在新时代下&#xff0c;消费者的需求结构、内容与方式发生巨大改变&#xff0c;企业要想获取更多竞争优势&#xff0c;需要借助大数据技术持续创新。本文分析了传统商业银行面临的挑战&#xff0c;并基于knn、逻辑回归、人工神经网络三种算法&#xff0…

Spring Boot框架下中小企业设备管理系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理中小企业设备管理系统的相关信息成为必然。…

新手入门之高级maven

文章目录 前言一、分模块设计与开发Maven 分模块设计的优势Maven 分模块设计的基本结构Maven 分模块项目的构建 二、继承与聚合三种打包方式&#xff1a;Maven 父模块和子模块的关系Maven 中的版本锁定1.<dependencyManagement> 标签主要特点&#xff1a; 2.使用 <pro…

刷题 - 图论

1 | bfs/dfs | 网格染色 200. 岛屿数量 访问到马上就染色&#xff08;将visited标为 true)auto [cur_x, cur_y] que.front(); 结构化绑定&#xff08;C17&#xff09;也可以不使用 visited数组&#xff0c;直接修改原始数组时间复杂度: O(n * m)&#xff0c;最多将 visited 数…

基于GPT的智能客服落地实践

&#x1f4cd;前言 在日常生活中&#xff0c;「客服」这个角色几乎贯穿着我们生活的方方面面。比如&#xff0c;淘宝买东西时&#xff0c;需要客服帮你解答疑惑。快递丢失时&#xff0c;需要客服帮忙找回。报名参加培训课程时&#xff0c;需要客服帮忙解答更适合的课程…… 基…

重构商业生态:DApp创新玩法与盈利模式的深度剖析

随着区块链技术的发展&#xff0c;DApp&#xff08;去中心化应用&#xff09;正在从实验走向成熟。DApp以去中心化、透明性和不可篡改性为基础&#xff0c;结合智能合约&#xff0c;逐步改变传统商业运作模式&#xff0c;创造新的市场生态。本文将从DApp的独特优势、创新玩法和…

找不到包的老版本???scikit-learn,numpy,scipy等等!!

废话不多说 直接上链接了&#xff1a; https://pypi.tuna.tsinghua.edu.cn/simple/https://pypi.tuna.tsinghua.edu.cn/simple/https://pypi.tuna.tsinghua.edu.cn/simple/xxx/ 后面的这个xxx就是包的名字 大家需要什么包的版本&#xff0c;直接输进去就可以啦 举个栗子&#…

【汇编语言】第一个程序(一)—— 一个源程序从写出到执行的过程

文章目录 前言1. 第一步&#xff1a;编写汇编源程序2. 第二步&#xff1a;对源程序进行编译连接3. 第三步&#xff1a;执行可执行文件中的程序结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程…

9. JSON RPC 服务

① JSON RPC 是一种基于 JSON 格式的轻量级的 RPC 协议标准,易于使用和阅读。 ② 在 Hyperf 里由 hyperf/json-rpc 组件来实现,可自定义基于 HTTP 协议来传输,或直接基于 TCP 协议来传输。 一、服务中心 目前 Hyperf 仅支持两种服务中心的组件支持: consul、nacosconsul 安…