Unity 使用LineRenderer制作模拟2d绳子

news/2024/12/12 4:43:31/

效果展示:

 实现如下:

首先,直接上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class LineFourRender : MonoBehaviour
{public Transform StartNode;public Transform MidNode1;public Transform MidNode2;public Transform EndNode;public int vertexCount = 10;LineRenderer lineRen;private void Start(){lineRen = GetComponent<LineRenderer>();}private void Update(){List<Vector3> pointList = new List<Vector3>();for (float ratio = 0; ratio <= 1; ratio += 1.0f / vertexCount){if (lineRen.useWorldSpace){Vector3 tangentLineVertex1 = Vector3.Lerp(StartNode.position, MidNode1.position, ratio);Vector3 tangentLineVectex2 = Vector3.Lerp(MidNode1.position, MidNode2.position, ratio);Vector3 tangentLineVectex3 = Vector3.Lerp(MidNode2.position, EndNode.position, ratio);Vector3 bezierPoint1 = Vector3.Lerp(tangentLineVertex1, tangentLineVectex2, ratio);Vector3 bezierPoint2 = Vector3.Lerp(tangentLineVectex2, tangentLineVectex3, ratio);Vector3 bezierPoint = Vector3.Lerp(bezierPoint1, bezierPoint2, ratio);pointList.Add(bezierPoint);}else{Vector3 tangentLineVertex1 = Vector3.Lerp(StartNode.localPosition, MidNode1.localPosition, ratio);Vector3 tangentLineVectex2 = Vector3.Lerp(MidNode1.localPosition, MidNode2.localPosition, ratio);Vector3 tangentLineVectex3 = Vector3.Lerp(MidNode2.localPosition, EndNode.localPosition, ratio);Vector3 bezierPoint1 = Vector3.Lerp(tangentLineVertex1, tangentLineVectex2, ratio);Vector3 bezierPoint2 = Vector3.Lerp(tangentLineVectex2, tangentLineVectex3, ratio);Vector3 bezierPoint = Vector3.Lerp(bezierPoint1, bezierPoint2, ratio);pointList.Add(bezierPoint);}}if (lineRen.useWorldSpace){pointList.Add(EndNode.position);}else{pointList.Add(EndNode.localPosition);}lineRen.positionCount = pointList.Count;lineRen.SetPositions(pointList.ToArray());// Draw(StartNode.position,EndNode.position,GetComponent<MeshRenderer>(),0.015).transform.SetParent(this.transform);}}

接下来,把LineFourRender.cs拖拽上去:

注意:VertexCount参数决定了绳子的丝滑程度,该值越大,绳子越丝滑。

最后是对LineRenderer组件和绳子材质的调整:

附一张绳子贴图:


http://www.ppmy.cn/news/1554397.html

相关文章

使用GO--Swagger生成文档

概述 在前后端分离的项目中&#xff0c;后端配置swagger可以很好的帮助前端人员了解后端接口参数和数据传输。go-swagger 是一个功能全面且高性能的Go语言实现工具包&#xff0c;用于处理Swagger 2.0&#xff08;即OpenAPI 2.0&#xff09;规范。它提供了丰富的工具集&#x…

Vue3 组件 view-shadcn-ui 2024.5.1 发布

View Shadcn UI 是一个基于 Tailwind CSS 构建的组件库。 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件&#xff1a;https://github.com/devlive-community/openai-java-sdk 推荐一套功能强大的开源数据中台系统&#xff1a;https:/…

单例模式--懒汉 饿汉模式

一.啥是单例模式? 先介绍一下设计模式&#xff1a; 设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀些固定的套路. 按照套路来⾛局势就不会吃亏. 软件开发中也有很多常⻅的 "问题场景". 针对这些问题…

高效整合聚水潭库存数据至MySQL的实现

聚水潭数据集成到MySQL&#xff1a;商品库存查询案例分享 在本次技术案例中&#xff0c;我们将详细探讨如何通过轻易云数据集成平台&#xff0c;将聚水潭的商品库存数据高效、可靠地集成到MySQL数据库中。具体方案为“聚水潭-商品库存查询-->BI彩度-商品库存表”&#xff0…

HarmonyOS-中级(四)

文章目录 Native适配开发三方库的基本使用 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的…

使用 Temporal 管理和调度 Couchbase SQL 脚本的实际例子

场景描述 目标&#xff1a;使用 Temporal 管理和调度一组 Couchbase SQL 脚本来完成以下任务&#xff1a; 同步数据&#xff1a;从其他数据源同步数据到 Couchbase。 执行数据聚合&#xff1a;运行统计 SQL 查询。 清理过期数据&#xff1a;定期清理 Couchbase 中过期或无效…

如何在 cPanel 中创建子域名:分步指南

cPanel 是一个用于管理网站的工具&#xff0c;操作界面简单直观&#xff0c;常用于管理网站的各种功能&#xff0c;包括创建子域名。很多知名的网络服务提供商&#xff0c;如 Hostease&#xff0c;都提供了 cPanel 管理工具。 本文将详细介绍如何在 cPanel 中创建子域名&#x…

如何将CSDN的文章保存为PDF?

目录 1、打开CSDN文章2、按F12或者鼠标右键选择检查并进入控制台3、在控制台输入以下代码4、然后回车&#xff08;Enter&#xff09;如果纵向显示不全就横向 1、打开CSDN文章 2、按F12或者鼠标右键选择检查并进入控制台 3、在控制台输入以下代码 (function(){ $("#side&q…