Unity - 2D物理系统

Unity - 2D物理系统

PS: 通用属性放在每一章最前面,每个组件只介绍特殊属性;

1.1 2D刚体(Rigidbody 2D)
属性描述
Body Type Dynamic(动力学):适用于需要移动并且接受完全物理模拟的2D刚体,包括重力、碰撞和施加力等影响;
Kinematic(运动学):适用于需要移动但不受物理力作用的2D刚体;
Static(静态):适用于不需要移动的2D刚体,它们作为游戏中的静态环境或障碍物存在;
Material可装载 2D 物理材质;
Simulated勾选后开启物理模拟;
Use Auto Mass勾选后根据碰撞体大小自动生成质量,并禁止手动设置质量;
Mass设置对象的质量;
Linear Drag影响位置移动的阻力系数;
Angular Drag影响旋转移动的阻力系数;
Gravity Scale定义游戏对象受重力影响的程度;
Collision Detection Discrete(离散模式):只有真正触碰到才触发碰撞事件;
Continuous(连续模式):连续检测会对整个路径都进行检测,一般用于解决子弹速度过快穿过目标的情况;
Sleeping Mode Never Sleep(禁用睡眠):刚体一直启用;
Start Awake:对象在最初时刚体处于启用状态;
Start Asleep:对象最初时刚体处于睡眠状态,但可以被碰撞唤醒;
Interpolate None:不应用移动平滑;
Interpolate:根据对象在先前帧中的位置来平滑移动;
Extrapolate:根据对象在下一帧中的估计位置来平滑移动。
Constraints Freeze Position(冻结位置):可以通过勾选取消 X 和 Y 轴的移动;
Freeze Rotation(冻结旋转):可以通过勾选取消 Z 轴的旋转;
1.2 2D 碰撞体
2D 碰撞体类别说明
Circle Collider 2D圆形碰撞体
Box Collider 2D盒子(矩形)碰撞体
Polygon Collider 2D多边形碰撞体
Edge Collider 2D线段(边界)碰撞体
Capsule Collider 2D胶囊碰撞体
Composite Collider 2D复合碰撞体
通用属性
属性描述
Material 可装载 2D 物理材质;
Is Trigger勾选后标记为触发器,触发器没有物理状态;
Used By Effector勾选后启用效应器;
Used By Composite勾选后合并到复合碰撞体
Auto Tiling自适应碰撞器大小;
Offset根据 X 、Y 轴对碰撞体进行偏移;
Size根据 X 、Y 轴对碰撞体进行缩放
Edge Radius默认为 0 ,可以增加碰撞体积,且值越大边缘越近似圆;
Auto Tiling自适应碰撞器大小;
Polygon Collider 2D
属性描述
Points Paths - Size:碰撞体数量;
Paths - Element m:对应第 m+1 个碰撞体;
Paths - Element m - Size:第 m+1 个碰撞体点的数量;
Paths - Element m - Element n:第 m+1 个碰撞体的第 n+1 个点,X、Y 表示坐标位置;
Edge Collider 2D
属性描述
Points Size:点的数量;
Element n:对应第 n+1 个点,X、Y 表示坐标位置;
Use Adjacent Start Point 启用后开启起点碰撞法线,X、Y 表示坐标位置;
Use Adjacent End Point 启用后开启终点碰撞法线,X、Y 表示坐标位置;
Capsule Collider 2D
属性描述
Direction Vertical:碰撞体的垂直高度大于等于水平高度;
Horizontal:碰撞体的水平高度大于等于垂直高度;
Composite Collider 2D
属性描述
Geometry Type Outlines:组合碰撞体时生成空心的轮廓;
Polygons:组合碰撞体时生成实心的轮廓;
Generation Type Synchronous:更改 2D 复合碰撞体时或者更改其任何成员碰撞体时立即自动生成新的碰撞体;
Manual:更改 2D 复合碰撞体时或者更改其任何成员碰撞体时需要手动设置碰撞体;
Vertex Distance 设置从复合碰撞体中的顶点所允许的最小间距。低于限值的顶点将被删除;
Offset Distance 设置的数值增大,这个复合碰撞器的范围会向中心位置收缩,当增大到达一定数值后,这个复合碰撞器的范围会完全消失;
碰撞检测脚本
using UnityEngine;//碰撞器测试类
public class CollisionTest : MonoBehaviour
{//碰撞开始private void OnCollisionEnter2D(Collision2D collision){Debug.Log("Enter");}//碰撞持续private void OnCollisionStay2D(Collision2D collision){Debug.Log("Stay");}//碰撞结束private void OnCollisionExit2D(Collision2D collision){Debug.Log("Exit");}
}//触发器测试类
public class TriggerTest : MonoBehaviour
{//触发开始private void OnTriggerEnter2D(Collider2D collision){Debug.Log("Enter");}//触发持续private void OnTriggerStay2D(Collider2D collision){Debug.Log("Stay");}//触发结束private void OnTriggerExit2D(Collider2D collision){Debug.Log("Exit");}
}
1.3 Physics Material 2D(2D物理材质)
属性描述
Friction 取值 0 - 1,增大该值增加物理摩擦力;
Bounciness 启用后开启起点碰撞法线,X、Y 表示坐标位置;
Use Adjacent End Point 碰撞从表面反弹的程度。值为 0 表示没有弹性,值为 1 表示完美弹性,没有能量损失;
1.4 2D 恒定力 (Constant Force 2D)
属性描述
Force 在世界坐标空间中应用的力的向量,X 为横向,Y 为纵向;
Relative Force 在本地坐标空间中应用的力的向量,X 为横向,Y 为纵向;
Torque 在世界坐标空间中应用的扭矩的向量,对象会围绕此向量开始旋转。此向量越长,旋转便越快;
1.5 2D 关节
2D 关节类别描述
Hinge Joint 2D2D铰链关节
Distance Joint 2D2D距离关节
Fixed Joint 2D2D固定关节
Friction Joint 2D2D摩擦关节
Relative Joint 2D2D相对关节
Slider Joint 2D2D 滑动关节
Spring Joint 2D2D 弹簧关节
Target Joint 2D2D 目标关节
Wheel Joint 2D2D 车轮关节
通用属性
属性描述
Enable Collision 勾选后允许两个连接的对象之间发生碰撞;
Connected Rigid Body连接到的另一个刚体对象;
Auto Configure Connected Anchor勾选后自动设置连接锚点位置;
Anchor设置锚点位置;
Connected Anchor设置连接锚点位置;
Use Motor勾选后开启马达;
Motor Motor Speed:指定马达速度;
Maximum Motor Force:马达可以施加的最大扭矩;
Use Limits勾选后启用角度限制;
Angle Limits Lower Angle:最低角度;
Upper Angle:最高角度;
Break Force受到最大限制的力后断开,设置为 Infinity 表示不会因为力断开;
Break Torque受到最大限制的扭矩后断开,设置为 Infinity 表示不会因为扭矩断开;
Distance Joint 2D
属性描述
Auto Configure Distance 勾选后自动设置距离;
Distance 手动指定距离;
Max Distance Only 勾选后 Distance 设置的值为对象的最大距离;
Fixed Joint 2D
属性描述
Damping Ratio 抑制弹簧振荡的程度,0 到 1 之间,值越大;
Frequency 控制弹簧的硬度,决定了对象振动频率;
Friction Joint 2D
属性描述
Max Force 降低对象线速度的力;
Max Torque 降低对象角速度的力;
Relative Joint 2D
属性描述
Max Force 能受到的最大力;
Max Torque 能受到的最大扭矩;
Correction Scale 确保关节的行为符合预期,默认为0.3;
Auto Configure Offset 自动设置偏移量;
Linear Offset 给定 X、Y 轴的线性偏移量;
Angular Offset 给定角偏移量;
Slider Joint 2D
属性描述
Auto Configure Angle 勾选后自动设置滑动角度;
Translation Limits Lower Translation:滑动最小偏移量;
Upper Translation:滑动最大偏移量;
Auto Configure Distance 勾选后自动设置距离;
Distance 给定弹簧的长度;
Target Joint 2D
属性描述
Auto Configure Target 自动设置目标点;
Target 给定一个目标点坐标;
1.6 2D 效应器
2D 效应器类别描述
Area Effector 2D2D 区域效应器
Buoyancy Effector 2D2D 浮力效应器
Point Effector 2D2D 点效应器
Platform Effector 2D2D 平台效应器
Surface Effector 2D2D 表面效应器
通用属性
Drag:线性阻力;
Angular Drag:角阻力;
属性描述
Use Collider Mask 使用碰撞遮罩过滤层级之间的碰撞,通过Collider Mask指定;
Force Use Global Angle:勾选后使用全局角度;
Force Angle:施加力的角度;
Force Magnitude:施加力的大小;
Force Variation:力的大小浮动;
Force Target:指定作用力的目标;
Damping
Buoyancy Effector 2D
属性描述
Density 流体的密度,密度较大的碰撞体会下沉,密度较小的碰撞体会上浮;
Surface Level 浮力流体的位置,对象高于此线时,不会对其施加浮力。
Flow Flow Angle:水流角度;
Flow Magnitude:水流大小;
Flow Variation:水流大小的浮动值;
Point Effector 2D
属性描述
Force Force Magnitude:施加的力,负值为吸引力,正值为斥力;
Force Variation:力的大小浮动;
Distance Scale:效应器和目标之间距离的缩放,计算距离时,会按照该比值对距离进行缩放;
Force Source:力的源头,可选刚体或碰撞器;
Force Target:作用力的对象,可选刚体或碰撞器;
Force Mode:Constant(忽略源和目标之间相隔的距离)、Inverse Linear(距离越远,力的大小呈线性减小)、Inverse Squared(力的大小按平方下降,类似现实世界重力);
Platform Effector 2D
属性描述
Rotational Offset 旋转偏移
One Way Use One Way:勾选后开启单向碰撞行为;
Use One Way Grouping:勾选此选项后,同一组的平台将共享同一个单向平台属性,可以方便批量设置;
Surface Arc:定义一个弧的角度,用于单向碰撞;
Sides Use Side Friction:勾选后开启平台两侧摩擦;
Use Side Bounce:勾选后开启平台两侧弹力;
Side Arc:和 Surface Arc 类似,但是作用于平台的侧面;
Surface Effector 2D
属性描述
Force Speed:沿表面保持的速度;
Speed Variation:随机加速度值,如果设置为负数则会随机减速;
Force Scale:调整施加力的比例,最好不要设为1,不然会抵消掉跳跃移动等力;
Options Use Contact Force:勾选后在表面和目标碰撞体之间的触点施力,可以使目标对象旋转;
Use Friction:勾选后开启摩擦力;
Use Bounce:勾选后开启弹力;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Flutter】序列化方案之命令行生成model

目录 方案一、json_model 一行命令,将json文件转为Dart model类及.g.dart。安装使用 方案二、build_runner 手动写model类,命令行生成.g.dart序列化类安装使用 参考 方案一、json_model 一行命令,将json文件转为Dart model类及.g.dart。 安装…

SFP、SFP+、SFP28 与 QSFP28 收发器之间的差异:兼容性和性能

近年来,网络技术发展迅速,因此,计算专业人员面临着越来越令人困惑的术语和缩写词。 管理数据中心时必须了解的一个关键领域是收发器,特别是 SFP (1550nm/1310nm)、SFP (850nm) 和 QSFP28 (4x25G) 之间的差异。 这些型号在兼容性方…

深入浅出 SQL 优化:全面提升查询性能的技巧

文章目录 前言一、表结构分析1. 索引分析2. 数据类型分析3. 思考反范式设计的适用场景与潜在风险3.1数据冗余3.2 数据一致性3.3 更新性能 4. 关注临时表的创建与使用。4.1.尽量减少临时表的使用,以降低系统资源的消耗。4.2 使用合适的索引和数据类型优化临时表的性能…

HarmonyOS ArkUI实战开发-窗口模块(Window)

窗口模块用于在同一物理屏幕上,提供多个应用界面显示、交互的机制。 对应用开发者而言,窗口模块提供了界面显示和交互能力。对于终端用户而言,窗口模块提供了控制应用界面的方式。对于操作系统而言,窗口模块提供了不同应用界面的…

internet.getUserEncryptKey提示错误

大家好,相信你看到标题的时候,你应该是遇到这样的麻烦事情,微信小游戏的官方文档的说明不够全面,所以导致开发者在开发过程中会遇到非常棘手的问题,但无奈的是官方给与的只有冷冰冰的文字,包括很多开发者在开发者平台留言自己遇到的问题,比如常见的这个:internet.getUs…

swiper 去掉轮播图上的小点点 小圆圈(完美解决方案)

文章目录 问题描述解决方案问题复现处理方案 问题描述 大家好!我是夏小花,今天是2024年4月22日|农历三月十四,今天这篇博文主要解决swiper 去掉轮播图上的小点点 小圆圈,具体解决方案如下所示 解决方案 问题复现 现在现在可以看…

命令模式:将请求封装为对象

在软件工程中,设计模式是解决常见问题的成熟模板。命令模式(Command Pattern)是这些设计模式之一,它属于行为型模式,用于将一个请求封装为一个对象,从而允许用户使用不同的请求、队列或日志请求来参数化其他…

数据结构初阶-二叉树

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 二叉树 树概念和结构 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限节点组成的一个具有层次关系的集合,把它叫做树…

python--pyQt5 进度条:QProgressBar

https://www.cnblogs.com/itwangqiang/articles/14959401.html https://blog.csdn.net/weixin_43990846/article/details/123880081 进度条用于向用户指示操作的进度,并向他们保证应用程序仍在运行 例 1 import sys from PyQt5.QtWidgets import QApplication, QWi…

【机器学习】特征筛选:提升模型性能的关键步骤

一、引言 在机器学习领域,特征筛选是一个至关重要的预处理步骤。随着数据集的日益庞大和复杂,特征的数量往往也随之激增。然而,并非所有的特征都对模型的性能提升有所贡献,有些特征甚至可能是冗余的、噪声较大的或者与目标变量无关…

Webpack-

定义 静态模块:指的是编写代码过程中的html,css,js,图片等固定内容的文件 打包:把静态模块内容压缩、整合、翻译等(前端工程化) 1)把less/sass转成css代码 2)把ES6降级…

OpenHarmony鸿蒙南向开发案例:【智能加湿器】

样例简介 智能加湿器具有实时监控其所处环境温度、湿度,并通过数字管家设置日程,自动打开加湿器控制湿度功能。显示界面使用DevEco Studio 编写的js应用,具有很好的兼容和移植特性。硬件上采用了带有HDF框架的驱动模型,通过GPIO和…

nodejs在控制台打印艺术字

const figlet require("figlet");figlet("SUCCESS", function (err, data) {if (err) {console.log("Something went wrong...");console.dir(err);return;}console.log(data);}); 参考链接: https://www.npmjs.com/package/figlet…

JetBrains相关的IDE有哪些?

JetBrains是一家成立于2002年的捷克软件开发公司,总部位于捷克的布拉格,同时在俄罗斯的圣彼得堡及美国麻州波士顿等地设有办公室。该公司以其高质量的集成开发环境(IDE)产品而闻名,这些产品被广泛应用于各种编程语言和…

.net 报错 远程主机强迫关闭了一个现有的连接 问题分析解决

先测试cmd 发现可以ping通地址:证明不是网络问题 postman 报错 Error: Hostname/IP does not match certificates altnames 设置里ssl验证默认开启,把选项关闭,接着就正常了:证明应该是https或ssl 相关通讯出现问题 visual st…

Android studio配置Flutter(看这一篇就够了)

Flutter 是 Google 推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter 提供了丰富的组件、接口,开发者可以很快地为 Flutter 添加 Native&#…

牛批!大三就冲进腾讯了!最新大厂后端面经面试题

先来唠唠 最近有一些小伙伴都约到了腾讯的面试,今天分享一位成功上岸腾讯的大三同学的面经。 希望可以鼓励到你! (对了,文末有面经交流群) 一面大概持续了45分钟,有35分钟都是在问Go基础相关的知识&…

20240420

docker 使用不添加sudo前缀 确认group: getent group如果没有docker组:sudo groupadd docker添加用户到docker组: sudo usermod -aG docker freja重启docker: sudo systemctl restart docker测试后依旧报错,如果是还是…

基于开源CrashRpt与微软开源Detours技术深度改造的异常捕获库分享

目录 1、异常捕获模块概述 2、为什么需要异常捕获模块? 3、在有些异常的场景下是没有生成dump文件的 4、开源异常捕获库CrashRpt介绍 5、对开源库CrashRpt的改进 C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持…

【图说】VMware Ubuntu22.04 详细安装教程

前言 无论是从事 Linux 开发工作,还是希望电脑运行双系统,VMware 虚拟机都是我们日常工作不可或缺的工具。本章将会重点介绍 VMware 安装流程,以及在 VMware 上如何运行、使用 Ubuntu22.04 系统。 一、VMware 下载安装 1.1 VMware 官网下载…