Unity2D物理系统详解

目录

RigidBody2D 组件

Dynamic类型

Kinematic运动学类型

Static类型

2D碰撞器(Edge Collider)

Box Collider2D 中的Layer Overrides

2D物理材质

恒定力Constant Force​编辑

效应器

区域效应器Area Effector

浮力效应器Buoyancy

点效应器Point Effector

平台效应器Platform Effector(单向碰撞器)

Surface Effector 表面效应器


RigidBody2D 组件

Dynamic类型

Simulated 是让2D刚体以及所有子对象2D碰撞器和2D关节都能够模拟物理效果

Linear Drag 影响位置移动的阻力系数, 该值越大,物体受到的阻力越大

Angular Drag 影响旋转的阻力系数

Gravity Scale 默认是1, 填2就是受到两倍重力

Collision Detection :碰撞检测采用的算法

Discrete :离散检测算法,只会用新位置进行计算,速度过快会直接穿过物体,而不发生碰撞

比如说,一个子弹在这一帧的位置在一个cube的前方一捏捏,由于速度过快,下一帧直接跑到cube的后面去了,也就是说在这连着的两帧,他直接贯穿了这个cube

Continuous: 该算法会把这两帧中间走过的路程都进行检测,也就是说子弹再快也无法贯穿cube,会被检测碰撞,但比较消耗性能

这里关于材质:

睡眠:

Kinematic运动学类型

在该类型下,物体不受力的影响,只能通过代码控制旋转或移动

运动学刚体可以撞Dynamic 刚体,但是反过来Dynamic撞不了运动学刚体,

因为运动学刚体不会受到力的作用

Static类型

2D碰撞器(Edge Collider)

值得注意的一个是Edge Collider

添加这个碰撞器后就是一条线,我们可以自由编辑这条线,像是一些凹凸不平的地形就可以用这个碰撞器

有的碰撞器还会有什么Used by Effector (是否应用于效应器)

Used by Composite 是是否被应用于复合碰撞

这个主要就是一个空的根物体上挂一个复合碰撞器(Composite Collider 2D)

这个子物体勾选后就会把内部重复的范围框合并成一个完整的碰撞范围框

复合碰撞器添加后会自动添加一个Rigidbody 脚本,他们要组合使用

盒状碰撞器中有个参数:

Edge Radius  是指盒状碰撞器的四个角的圆润程度,0就是尖的,越大会变得越圆润

Box Collider2D 中的Layer Overrides

  1. Layer Override Priority(图层覆盖优先级): 这个选项决定当有多个碰撞层级重写时,哪个重写将优先生效。它可以让你设置复杂的碰撞关系,例如当一个物体属于多个碰撞层级时。

  2. Include Layers(包含层): 这里可以选择哪些额外的图层应该在判断Collider2D是否与其他Collider2D接触时被考虑在内。这允许你指定哪些图层的物体可以与当前的Collider2D发生碰撞。

  3. Exclude Layers(排除层): 这里可以选择在判断Collider2D是否与其他Collider2D接触时应该排除的额外图层。这允许你明确指出哪些图层的物体不应当与当前的Collider2D发生碰撞。

  4. Force Send Layers(强制发送层): 这里可以选择在Collider2D之间发生碰撞时,当前Collider2D可以向哪些图层的物体发送力。当物体之间碰撞并且需要施加物理影响时,可以使用这个选项。

  5. Force Receive Layers(强制接收层): 这里可以选择在Collider2D之间发生碰撞时,当前Collider2D可以从哪些图层的物体接收力。这与Force Send Layers相对,决定了当前物体可以受到哪些图层的物体的影响。

  6. Contract Capture Layers(收缩捕获层): 此选项允许你选择哪些图层将在Collider2D收缩时捕获另一个Collider2D。通常这用于触发器事件,当物体的Collider2D变小并可能脱离与其他物体的接触时。

  7. Callback Layers(回调层): 在这里,你可以选择在Collider2D与其他Collider2D接触时,哪些图层将触发回调事件,例如报告碰撞或触发器事件。(就是OnTriggerEnter那些之类的函数)

收缩捕获层:

比如一个球正在与另一个碰撞器接触, 当这个球进行收缩的时候,它会和球脱离接触, 如果我在球的这个碰撞器中重写了这个捕获层,就是有指定那个碰撞器的收缩捕获层,他(球)仍然会保持与该碰撞器的

”接触“和触发

正常情况下一般是通过移动改变位置来进入和脱离(接触)状态

2D物理材质

恒定力Constant Force

效应器

区域效应器Area Effector

每个效应器都应该配合着rigidbody使用

效应器都需要将刚体设置为触发器并勾选应用于刚体

Use Collider Mask 就是效应器作用的对象层级,不勾选默认所有,勾选了就可以指定层级

Use Global Angle 是是否选择以世界坐标的方向为力的作用方向

在不勾选的情况下,默认以物体自身的方向为效应器力的方向

Force Angle ——>0°默认为选定 的方向的右方,180°默认向左

Force Magnitude 施加力的默认大小

Force Variation 在默认施加力的基础上进行随机变化的力,

拿图中举例,实际施加的力为→(35+0,35+30)

Force Target→

浮力效应器Buoyancy

主要用来实现小溪河流啥的漂浮和向左或右的水流冲击:

Density 是流体的密度,当物体的密度大于流体的密度时,物体下沉, 小于的时候就上浮

所以当物体沉在水中,可以调大Density来改善

Surface Level 定义浮力流体的表面位置,也就是一条线,当物体处于该线上方,则不会受到浮力,在交汇处及以下才会受到浮力

Linear Drag 是影响位移的阻力大小

Angular是影响旋转的阻力大小

点效应器Point Effector

其实也就是在两个点之间产生一个力(吸引或排斥)

力为正数是排斥

为负数是吸引

平台效应器Platform Effector(单向碰撞器)

可以用于制作跳跃平台之类的游戏,从一个平台底部跳跃穿过该平台,然后站在该平台上面

Rotational Offset→

类似于一个可从下往上穿的范围,在这条线以上的部分是不允许从任何角度穿过的,以下的部分允许从下往上穿过,可以通过设置偏移改变 这条线的位置

Surface Arc 也就是说在这个角度范围内的面,是不允许被穿过的

Use Side Friction 让平台边沿具有摩擦力:

如图红色箭头,让边缘墙壁具有摩擦力或是光滑可用该选项调整

Bounce 就让边缘墙壁是否具有弹力

Side Arc 定义左右两边响应的弧度,也就是范围

Surface Effector 表面效应器

可以用于制作一些类似于传送带的功能

Speed为正,传送带给予的力向右,否则向左

Force Scale 和Speed 会共同调节传送带的速度

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity2D 是一款非常流行的游戏引擎,可以用于开发各种类型的游戏,包括答题游戏。许多开发者需要一个答题系统源码来参考和学习,这里就向大家介绍一下 Unity2D 答题系统源码。 Unity2D 答题系统源码主要包括两个部分:界面设计和功能实现。界面设计包括题目展示、选项显示、计时器、得分等,这些都需要通过 Unity2D 引擎实现。功能实现涉及到游戏逻辑、数据管理、UI 交互等方面,需要开发者根据自己的需求进行设计和编写。 在使用 Unity2D 答题系统源码时,需要注意以下几点: 1. 熟悉 Unity2D 引擎,掌握常用的 2D 游戏开发技术。 2. 根据游戏规则和要求进行功能设计和实现,包括题目难度、题型、分数计算等。 3. 使用 C# 编程语言进行代码编写,包括游戏逻辑、UI 交互、数据管理等。 4. 界面设计需要考虑用户体验,如何让用户更方便、更快速地进行答题操作。 5. 确保代码的可扩展性和可维护性,方便后续的修改和维护工作。 总体来说,Unity2D 答题系统源码可以让开发者更快速地实现答题游戏功能,并且可以根据自己的需要进行修改和扩展。但是需要开发者具备一定的编程和设计技能,才能更好地使用 Unity2D 引擎进行游戏开发。 ### 回答2: Unity2D答题系统源码是一个基于Unity2D引擎开发的答题游戏源码。该源码可以帮助初学者了解和掌握Unity2D的开发技巧,同时也可以作为答题游戏的基础代码,方便开发者快速进行二次开发。 该源码包含了题目的制作、难度等级的设置、计分系统、倒计时等核心功能。玩家可以通过点击正确的答案来获得积分,同时还可以利用道具来增加自己的分数和答题时间。 在该源码的开发过程中,我们需要掌握Unity2D引擎的基本知识和编程技巧,比如物体的移动、碰撞检测、动画控制等。同时还需要了解答题游戏的设计原理和玩家习惯,才能开发出适合玩家的游戏。 总之,Unity2D答题系统源码是一个重要的学习资料,它可以帮助我们深入理解Unity2D引擎的开发技巧,同时也可以作为开发答题游戏的基础代码,提高游戏的开发效率和质量。 ### 回答3: Unity2D答题系统源码是一种基于Unity2D游戏引擎的答题系统源代码。它主要提供一组可定制的答题功能,包括题目类型、难度等。这个系统可以用于各种类型的测试,比如知识测试、考试、调查、竞赛等。 这个答题系统源码提供了一个完整的框架,可以方便地修改和扩展。它包含了一个用户管理系统、答题系统和结果分析系统。每个用户可以注册并登录,然后选择他们想参加的测试。用户可以选择一个或多个题目类型和难度,然后开始答题。测试结束后,用户可以看到自己的得分,并可以查看自己的答案和正确答案。管理员可以在后台管理用户和测试,查看测试结果和分析报告。 这个系统的优点是,它构建在Unity2D游戏引擎的基础之上,可扩展性强,可以适应不同的需求。它还具有用户友好的界面,可以吸引用户并提供良好的参与体验。此外,这个系统源码是免费提供的,任何人都可以使用和修改它,让它更好地满足自己的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值