使用LineRenderer完成行军蚁移动画线过程2d

2024-03-27 13:20

本文主要是介绍使用LineRenderer完成行军蚁移动画线过程2d,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天完成的行军蚁的一个小项目,记录一下

    • 首先是在Unity的LineRenderer的组件设置,要让那个线有虚线的效果,并且在滚动,需要材质球设置 ,设置如下

这是材质球的设置

材质球需要改一下他的类型然后把材质球挂到线的LineRerderer组件上进行虚线的一个效果调试

在最下方的Tiling进行参数修改,可以调整虚线的间距

    • 接下来就是用代码实现画线效果

 //用队列存储每次画线的位置Queue<Vector3> que = new Queue<Vector3>();//要移动的物体public GameObject airplane;//线public LineRenderer line;//初始速度public float speed = 1;Vector3 pos;float time;float starttime;// Start is called before the first frame updatevoid Start(){pos = airplane.transform.position;que.Enqueue(airplane.transform.position);}// Update is called once per framevoid Update(){//点击鼠标左键获取坐标并且入队if(Input.GetMouseButton(0)){//屏幕坐标转世界坐标Vector3 pp = Camera.main.WorldToScreenPoint(airplane.transform.position);Vector3 ppp = new Vector3(Input.mousePosition.x, Input.mousePosition.y, pp.z);Vector3 p = Camera.main.ScreenToWorldPoint(ppp);que.Enqueue(p);//设置线的数组数量,并且赋值line.positionCount = que.Count;line.SetPositions(que.ToArray());}//抬起的时候进行物体移动else if(Input.GetMouseButtonUp(0)){PlaneMove();}//这个pos的位置在每次移动过后都会边只有一开始不动的时候是和行军蚁的位置匹配的所以除了第一次不进这个判断后面都会进if(pos!=airplane.transform.position){airplane.transform.position = Vector3.Lerp(airplane.transform.position, pos, (Time.time - starttime) / time);line.positionCount = que.Count;line.SetPositions(que.ToArray());}else if (que.Count>0){PlaneMove();}}public void PlaneMove(){pos = que.Dequeue();starttime = Time.time;time=Vector3.Distance(airplane.transform.position, pos)/speed;airplane.transform.up = pos - transform.position;}

这篇关于使用LineRenderer完成行军蚁移动画线过程2d的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852227

相关文章

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1