当前位置: 首页 > news >正文

Unity 通过鼠标移动和LineRenderer组件实现画线功能

在Unity中,使用LineRenderer组件可以在场景中绘制简单的线条,所以我们要实现通过鼠标移动来绘制线条的功能,可以使用LineRenderer组件实现。

要灵活进行绘制,那么就需要全程使用代码控制,包括线条的创建和基本属性设置,然后是线条的端点数的添加,具体代码可以这样编写:

using UnityEngine;public class DrawLineOnMouseDrag : MonoBehaviour
{private LineRenderer lineRenderer;private bool isDrawing = false;void Start(){CreateNewLine();}void Update(){if (Input.GetMouseButtonUp(0)){isDrawing = false;CreateNewLine();}if (isDrawing && Input.GetMouseButton(0)){Vector3 mousePos = GetMouseWorldPosition();lineRenderer.positionCount++;lineRenderer.SetPosition(lineRenderer.positionCount - 1, mousePos);}if (Input.GetMouseButtonDown(0)){isDrawing = true;}}void CreateNewLine(){GameObject lineObject = new GameObject("Line");lineRenderer = lineObject.AddComponent<LineRenderer>();// 设置LineRenderer的基本属性lineRenderer.positionCount = 0;lineRenderer.material = new Material(Shader.Find("Sprites/Default"));lineRenderer.startColor = Color.red;lineRenderer.endColor = Color.blue;lineRenderer.startWidth = 0.1f;lineRenderer.endWidth = 0.1f;}Vector3 GetMouseWorldPosition(){Vector3 mousePos = Input.mousePosition;mousePos.z = -Camera.main.transform.position.z;return Camera.main.ScreenToWorldPoint(mousePos);}
}

把脚本放到场景中,运行起来:

Unity 通过鼠标移动和LineRenderer组件实现画线功能

相关文章:

  • 基于Pytorch的验证码识别模型应用
  • 【python】pygame游戏框架
  • docker使用教程
  • Sentinel原理及实践
  • 图片标注编辑平台搭建系列教程(2)——fabric.js简介
  • CKS之安全沙箱运行容器:gVisor
  • JUC:线程活跃性(死锁、活锁、饥饿)
  • Python下载bing每日壁纸并实现win11 壁纸自动切换
  • MySQL详细教程
  • 从头搭建GPT(Andrej Karpathy) 笔记
  • Vue中的MVVM
  • Jenkins磁盘空间批量清理脚本
  • 如何在Windows 10中打开屏幕键盘?这里有详细步骤
  • css的各种样式
  • Axure中后台系统原型模板,B端页面设计实例,高保真高交互54页
  • Apache Spark Streaming 使用实例
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • github从入门到放弃(1)
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS实现简单的MVC模式开发小游戏
  • PHP 7 修改了什么呢 -- 2
  • Redis中的lru算法实现
  • Sublime text 3 3103 注册码
  • vuex 笔记整理
  • 大整数乘法-表格法
  • 小程序开发之路(一)
  • 小程序开发中的那些坑
  • 延迟脚本的方式
  • 优化 Vue 项目编译文件大小
  • 再次简单明了总结flex布局,一看就懂...
  • 自制字幕遮挡器
  • 最简单的无缝轮播
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #stm32驱动外设模块总结w5500模块
  • #vue3 实现前端下载excel文件模板功能
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (27)4.8 习题课
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)Linux——Linux常用指令
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)程序员技术练级攻略
  • (转)负载均衡,回话保持,cookie
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET企业级应用架构设计系列之技术选型
  • .sh
  • @javax.ws.rs Webservice注解