前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UGUI系列-列表添加物理效果(Unity3D)

UGUI系列-列表添加物理效果(Unity3D)

作者头像
恬静的小魔龙
发布2022-08-07 09:20:28
4400
发布2022-08-07 09:20:28
举报
文章被收录于专栏:Unity3DUnity3D

一、前言

最近要做一个滑动列表界面,美术的效果图为用绳子连接的短板,上面附带信息,看图的感觉似乎添加点物理效果(让绳子不规则的带动短板晃动)会显得更加真实,于是为这个界面加了些物理效果,感觉还不错,特此记录下。

二、正文

目标: 为UGUI滑动列表中的Element添加物理效果,模拟出绳子微微晃动的感觉。

在这里插入图片描述
在这里插入图片描述

关键Component: Scroll View,Rigidbody2D和Distance Joint2D。

基本思路: 1、按照传统方式为Scroll View添加Element

在这里插入图片描述
在这里插入图片描述

2、在添加Element时,用脚本动态为最上方(第一个)的Element添加一个Rigidbody2D组件。 3、在添加Element时,用脚本动态为第二个及以后每一个Element添加一个Rigidbody2D和DistanceJoint2D组件,并设置与前一个Element的关联。 4、在需要晃动的时候,给第二个开始的每一个Element所附带的Rigidbody2D一个力即可。

注意事项:

在这里插入图片描述
在这里插入图片描述

1、不要直接为Content下的Element添加Rigidbody2D和DistanceJoint2D组件,因为Content上的Layout组件会更新他们的位置,导致晃动失败。应该把物理组件添加到Element的子节点上。

在这里插入图片描述
在这里插入图片描述

2、为第一个Element添加的Rigidbody2D设置为Static,后面的Element的Rigidbody2D设置为Dynamic。

在这里插入图片描述
在这里插入图片描述

3、第二个及以后的Element添加Rigidbody2D时,应该调整gravityScale为0,避免其受到重力影响在刚添加的时候就直接掉下去了,同时添加的DistanceJoint应该打开autoConfigureDistance开关,让它能自动获取到两个Element之间的距离。

在这里插入图片描述
在这里插入图片描述

4、设置一个激活命令,当激活时,打开第二个Element及以后的Rigidbody2D上gravityScale,设置DistanceJoint2D的drag属性,并关闭autoConfigureDistance开关,使distance不会再次更新。当然,也应该确保maxDistanceOnly开关开启,和breakForce设置为Infinity(默认)。

在这里插入图片描述
在这里插入图片描述

5、Element的结构如图,Connexions下的四个Transform是为了让上下Element找到对应的目标,以保证红色的绳子(Ropes:R1和R2)能够得到正确的旋转及长度设置(其实如果为了获取旋转而不调整绳子长度,直接获取上下Rigidbody2D相对位置,效果应该也是一样的)。

在这里插入图片描述
在这里插入图片描述

6、绳子要设定正确的锚点,这样旋转起来效果才能正确

关键代码: HHDScrollViewPhysics2D类: Scroll View上带的脚本,留出为Scroll View添加Element的接口,添加的每一个Element都必须带有HHDScrollViewItem_TwoNode脚本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HHDScrollViewItem_TwoNode类: 每一个Element上带的脚本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、正文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档