【Unity3D】利用Hinge Joint 2D组件制作绳索效果

server/2025/1/21 0:21:18/

目录

一、动态绳索 (可移动根节点)

二、静态绳索

三、利用Skinning Editor(Unity2022.3.15f1正常使用)

四、注意事项


一、动态绳索 (可移动根节点)

 

动态绳索 DynamicRope空物体
Anchor和whitecircle是相同位置的物体,Anchor是一个没有SpriteRenderer,仅有2D刚体和HingeJoint2D
1、所有DynamicRope下的物体都有2D刚体,且都为Dynamic类型

为了表现效果,可以将绳索节点whitecircle的物体质量设置为2,ball质量为3,ball重力调为1.5
2、所有DynamicRope下的物体都有HingeJoint2D组件,除了Anchor以外HingeJoint2D组件均以上一个物体作为连接节点,例如whitecircle身上的会用Anchor的2D刚体作为连接节点,其他以此类推。【注意:Anchor的HingeJoint2D组件的Connect Rigid Body是空的】

3、所有绳索节点都挂载了一个2D碰撞体如下

物体摆放和HingeJoint2D的Anchor锚点以及节点旋转角度限制情况如下图

(蓝色点是锚点,每个物体的锚点均连接到上一个物体底端)
绿色扇形是节点旋转可旋转角度范围,这个范围的设置有点怪的,如果你设置和我一样但结果不同请自行调整。

Anchor物体的节点旋转范围可以不做限制,如果做了限制根节点则无法让绳索360度旋转。

 不勾选Use Limits即不做限制。

运行游戏后,动态绳索只能移动Anchor空物体,去带动整个绳索移动,不能移动其他物体,即使移动DynamicRope物体,也是有问题的。

特别注意:第一个whitecircle节点不要勾选,其他节点需要勾选它,保证锚点自动同步。
如果你制作的是静态绳索,则不会有该问题发生,可以保持勾选。

若勾选了会导致该第一个节点的锚点会随着移动而变化,会不断往下掉。


二、静态绳索

StaticRope挂2D刚体,改为如下图配置

 其子节点的情况和动态绳索一样,挂载2D刚体、HingeJoint2D以及2D碰撞体,区别在于没有Anchor空物体作为节点头部,而是直接以whitecircle作为第一个节点,它连接的2D刚体是StaticRope的2D刚体。

运行游戏,使用了一个脚本对staticBall 2D刚体施加一个爆发力就能看到效果。

staticRopeBall.AddForce(new Vector2(staticForce, 0), ForceMode2D.Impulse);

三、利用Skinning Editor制作骨骼绳索(Unity2022.3.15f1正常使用)

需要导入2D Animation
有部分Unity版本会不支持会发生各种报错,可以更换Unity版本解决如我的版本或搜索其他版本。

 

选中我们要编辑生成骨骼的精灵图片,我的是一张50*50,但内容只有20*50的白色图

双击图片内容,白色部分,会出现一个橙色框

点击创建骨骼,然后在橙色框内可以左击生成骨骼,移动鼠标再次点击后决定骨骼结束点,完成一个骨骼的生成,骨骼是指上面的那些五颜六色的箭头,每一个都是一个骨骼节点。
点击右击可以取消当前操作。
点击Edit Bone后,可选中骨骼节点进行编辑位置和旋转,务必保证角度一致(垂直朝向),最好保证骨骼高度一致。
点击Auto Geometry,调整参数后生成几何体,最终点击Apply保存图片

拖拽图片成为物体,挂载Sprite Skin组件,生成骨骼节点 

进行如下操作把嵌套的骨骼节点拆开,变成不嵌套的子物体。

之后则是与动态绳索或静态绳索一致的创建流程了,组件情况如下:
Anchor和bone_1保持一致的Transform

bone_1(第一个节点)务必保证如下图设置Hinge Joint 2D组件

Anchor不做角度限制,其他节点做角度限制

这个角度限制要可能不同版本会有不同的设置方式,结合自身情况调整吧

四、注意事项

1、关于绳索节点图片,使用的是50*50的白色圆形图片,不要有多余的透明区域,否则会影响绳索表现,例如图片留白很多,绳索节点的形变会很抽象,还有使用长方形图片也有点抽象,尽量选择相同宽高的图片作为节点。

2、上面提到了动态绳索的第一个节点whitecircle物体的Hinge Joint 2D组件不要勾选Auto Configure Connected Anchor,除了这个情况以外都保持默认勾选状态。你可以勾选测试下会发生严重的锚点偏移。

3、骨骼绳索的制作骨骼,若你想拉伸制作完成后的绳索,那么它的碰撞体是不会变化的,所以要手动调整或脚本调整;若你的骨骼节点高度不一样的话,基本上每个节点的碰撞体参数会不一样,调整起来会非常麻烦,所以制作骨骼时要保证高度一样,也有点麻烦。


http://www.ppmy.cn/server/160024.html

相关文章

ESP8266-01S、手机、STM32连接

1、ESP8266-01S的工作原理 1.1、AP和STA ESP8266-01S为WIFI的透传模块,主要模式如下图: 上节说到,我们需要用到AT固件进行局域网应用(ESP8266连接的STM32和手机进行连接)。 ESP8266为一个WiFi透传模块,和…

基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Redis | 第6章 事件与客户端《Redis设计与实现》

前言 参考资料:《Redis设计与实现 第二版》; 第二部分为单机数据库的实现,主要由以下模块组成:数据库、持久化、事件、客户端与服务器; 本篇将介绍 Redis 中的事件与客户端,其中事件有两种:文件…

EAMM: 通过基于音频的情感感知运动模型实现的一次性情感对话人脸合成

EAMM: 通过基于音频的情感感知运动模型实现的一次性情感对话人脸合成 1所有的材料都可以在EAMM: One-Shot Emotional Talking Face via Audio-Based Emotion-Aware Motion Model网站上找到。 摘要 尽管音频驱动的对话人脸生成技术已取得显著进展,但现有方法要么忽…

精品PPT | 某制造集团灯塔工厂解决方案

这份解决方案PPT详细介绍了某制造集团的灯塔工厂解决方案,涵盖了灯塔工厂的建设背景、规划、实践案例以及方法总结。展示了集团如何通过数字化转型应对行业挑战,实现智能制造,以及如何通过工业互联网、自动化、智能化等技术提升生产效率和质量…

C# 数据结构全面解析

在 C# 编程的世界里,数据结构是构建高效程序的基石。合理运用数据结构,能够优化数据的存储和访问方式,显著提升程序的性能。本文将深入探讨 C# 中常见的数据结构及其应用场景。 一、数据结构基础概念 数据结构是一种组织和存储数据的方式&a…

大象机器人发布首款穿戴式数据采集器myController S570,助力具身智能数据收集!

myController S570 具有较高的数据采集速度和远程控制能力,大大简化了人形机器人的编程。 myController S570 是一款可移动的轻量级外骨骼,具有 14 个关节、2 个操纵杆和 2 个按钮,它提供高数据采集速度,出色的兼容性&#xff0c…

K近邻算法实战——电影分类算法

文章目录 一、k最近邻算法的原理二、k最近邻算法过程详解三、kNN算法的注意事项1. k值的选取2. 距离的度量(1)欧氏距离(2)曼哈顿距离(3)切比雪夫距离3. 特征归一化四、k最近邻算法案例分享1. 电影分类kNN算法实战五、kNN算法优缺点一、k最近邻算法的原理 简单来说,kNN可…