您现在的位置是:首页 > 正文

Unity LineRenderer绘制线条并产生碰撞

2024-02-01 04:12:28阅读 1

首先在这里让我们沉痛哀悼抗击新冠肺炎疫情斗争牺牲烈士和同胞

 

因为项目中有用到,感觉挺好玩所以记录一下,有需要的小伙伴可以借鉴一下。

先看一下最终效果:

--- 详细参数:

Unity  Linrenderer

 

Cast Shadows:线是否投射阴影

Receive Shows:线是否接收阴影

Motion Vectors:运动轨迹

                           Camera Motion Only:只有相机移动

                           Per Object Motion    :每一个对象移动也会跟着移动

                           Force No Motion      :强制移动

Materials:线的材质

Light Parameters:光照贴图参数,使该线与全局照明系统交互

User World Space:如果启用,则这些点将被视为世界坐标,而不是受此组件所附加的GameObject的变换所影响。

Loop:启用此选项可连接线路的第一个点和最后一个点的位置,最终将会形成闭环。

Position:要连接的Vector3的点的数组。

Width:定义宽度值和曲线(控制线在其开始和结束之间的各个点数的宽度。曲线仅在每个顶点处采样,因此其精度

受到线中存在的顶点数量的限制,线的总宽度由宽度值控制)

Color:定义渐变以控制线条沿其长度的颜色。

Corner Vertices:此属性指示在绘制线条中的角落时使用了多少额外顶点。增加此值可使线条边角显得更圆。数值

越大越耗费性能。

End Cap Vertices:此属性指示使用多少额外顶点在线上开始端与结尾端。增加此值可使线条显示更圆。数值越大

越耗费性能。

Alignment:对齐方式。

Texture Mode:添加线条纹理。

Shadow Bias:沿着光的方向移动阴影,以通过使用广告牌几何体近似体积来消除阴影瑕疵。

Generate Lighting Data:如果启用则使用包括法线和切线构建线几何,这允许它使用场景的材质照明,例如通过

标准着色器或使用自定义着色器。

Sorting Layer:渲染器的排序图层的名称。

Order in Layer:此渲染器在排序图层中的顺序。

Light Probes:基于探测器的光照插值模式。

Reflection Probes:如果启用并且场景中存在反射探测,则会为此线渲染器拾取反射纹理并将其设置为内置的着色器

均匀变量。


现在话不多说开始操作我们创建一个LineRenderer

一。   为其添加 Edge Collider 2D(边缘碰撞器)组件,这个组件是用于为我们绘制出来的线添加碰撞效果使用,其中

的Material我们可以自己创建一个New Physics Material 2D(在Project右键Create里面可以找到,这个添加碰撞的效

果是弹性力度比如乒乓球)

   

二。 为其添加Surface Effect2D(表面行为)组件,这个组件可以为线条添加一个方向的移动的力,例如传送带或者是机场的

平面电梯那种效果。

  

三。 准备工作就到这里了,现在开始码功能。根据我们的需求实现第一步,我们需要使用在屏幕上画一条线生成出来。那我们

那我们就要先拿到鼠标的在屏幕中的位置:

 Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

拿到之后就简单很多了,我们只需要根据这个坐标生成我们前面制作的Linderer就可以了,将Linderer设置为预设然后使用Instantiate关键字这个我这里就不讲了:

    void SetPoint(Vector2 point)  //这里的point就是前面我们获取到的鼠标在世界坐标中的位置
    {
        points.Add(point);        //这里是新创建的List 用于其他操作

        lineRenderer.positionCount = points.Count;
        lineRenderer.SetPosition(points.Count - 1, point);

        if (points.Count > 1)
        {
            edgeCol.points = points.ToArray();
        }

    }

lineRenderer.positionCount(); 是Lindere中的函数,设置/获取顶点数。

lineRenderer.SetPosition(); 是Lindere中的函数,设置顶点在直线上的位置。

写到这里小伙伴就可以在场景中测试一下,将线绘制出来。当然还有最重要的一个步骤就是为我们的线实时调整Edge碰撞体

的点,也就是最后一句 edgeCol.points = points.ToArray(); 将List转为数组赋值给Edge.points即可。

 

怎么样是不是超级简单大部分都是Unity的基础,Unity的功能还是非常强大的特别是其中的组件,只要我们大家将其中的组

件用法熟悉清楚有很多问题都可以迎刃而解。

好了  今天先到这里,有兴趣的小伙伴可以关注一下博主。因为从今天开始以后博主会勤奋努力的开始定期更新博文,主要以Unity为主。

谢谢大家~

 

网站文章

  • 再谈Js定义变量,你不得不踩的那些坑

    再谈Js定义变量,你不得不踩的那些坑

    前言今天在Codewars刷题,碰到一个7kyu(这个等级,学过一点js的人,都会做)等级的题目,题目很简单:求累加和,并对异常情况进行特殊处理。看着非常简单,事实上并不难。我的第一次代码:// ??...

    2024-02-01 04:12:00
  • 漏洞分析|Adobe ColdFusion WDDX 序列化漏洞利用

    漏洞分析|Adobe ColdFusion WDDX 序列化漏洞利用

    本文将分享继 CVE-2023-29300 之后的不出网利用方式,提出 C3P0 和 JGroups 两条基于服务错误部署的新利用链。现 Goby 中实现了 C3P0 和 JGroups 利用链的完整利用,完全支持命令执行以及结果回显功能。

    2024-02-01 04:11:53
  • 医院招聘护士 计算机证,医院招聘护士的自我介绍

    护士的自我介绍是向别人展示自己的一个重要手段,自我介绍得好不好,直接关系到自身给别人第一印象的好坏,也对以后交往顺利与否起到不可忽视的作用,以下是学习啦小编为您整理的护士的自我介绍内容,希望能帮到你。...

    2024-02-01 04:11:48
  • ARM NEON 编程简单入门1

    NEON简介NEON是适用于ARM Cortex-A系列处理器的一种128位SIMD(Single Instruction, Multiple Data,单指令、多数据)扩展结构。从智能手机和移动计算设备到HDTV,它已被公认为是多媒体应用领域中最为优越的处理器之一。它采用专门设计,简化了软件在不同平台之间的移植,为类似DolbyMobile的密集型多媒体应用提供了低能耗和灵活的加速功...

    2024-02-01 04:11:18
  • 详细创建Prism架构wpf项目

    详细创建Prism架构wpf项目

    wpf prism 创建

    2024-02-01 04:11:10
  • 笔记本计算机点管理点不开,电脑黑屏只有鼠标箭头任务管理器打不开 怎么解决...

    1、电脑黑屏显示器接触不好:你把显示器接主机箱后面的接口拆下来并清理干净,再接好了试试,注意不要把接口接反了。如果接触没问题还不行,最好换一台显示器试试,以便确定是否显示器有问题。2、电脑黑屏内存条接...

    2024-02-01 04:11:07
  • WPF笔记汇总之消息框与界面控件

    接上一篇 《WPF笔记汇总之命令的使用》,这篇主要汇总WPF中的消息框及通用界面控件如工具栏,菜单栏,状态栏等控件的使用方法汇总。

    2024-02-01 04:11:01
  • 计算机excel怎么备注,excel自动得出结果_excel表格怎么让计算公式得出结果并带有备注?_excel得出结果_excel怎么得出结果...

    计算机excel怎么备注,excel自动得出结果_excel表格怎么让计算公式得出结果并带有备注?_excel得出结果_excel怎么得出结果...

    excel表格怎么让计算公式得出结果并带有备注?在建筑行业里造价人员经常要用到excel表进行计算公式,但是很多人不知道如何使计算公式得出结果并带有备注,下面我来手把手讲解1、打开excel表,ctr...

    2024-02-01 04:10:36
  • 【HAOI2016】找相同字符

    后缀自动机入门题分别对两个串建后缀自动机,然后把endpos的大小算出来,最后在两个后缀自动机上一起dfs一遍并且算答案。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int max...

    2024-02-01 04:10:29
  • SQLSERVER 查看sql执行状态,死锁等待

    SELECT [Spid] = session_Id, ecid, [Database] = DB_NAME(sp.dbid), [User] = nt_username, [Status] ...

    2024-02-01 04:10:22