考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了
C#篇、unity通用篇、unity3D篇、unity2D篇
。
- 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
- 【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
- 【unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
- 【unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。
这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。
文章目录
前言
学习2D刚体组件(Rigidbody2D)之前,建议先去看看我之前写的【3D刚体组件Rigidbody】,因为它们非常的类似。这里一些讲过的知识点就不过多赘述了。
2D物理系统中的刚体组件
- 刚体是物理系统中用于帮助我们进行模拟物理碰撞中力的效果的。
- 2D物理系统中的刚体和3D中的刚体基本是一样的,最大的区别是对象只会在XY平面中移动,并且只在垂直于该平面的轴上旋转。
一、2D物理系统碰撞触发必要条件
1、碰撞器组件
- 双方物体必须都持有 Collider 2D 组件(如 BoxCollider2D, CircleCollider2D 等)
- 用于定义物体的物理形状和碰撞边界
2、刚体组件要求
- 至少一个物体需附加 Rigidbody2D 组件
- 注意:若双方均为静态刚体(
Body Type = Static
),不会触发物理碰撞响应
3、层级碰撞设置
- 双方物体的Layer需在 Physics 2D Settings(菜单:Edit > Project Settings > Physics 2D)中设置为可交互
- 默认新层未配置时会继承项目初始设置
4、几何相交检测
- 碰撞器之间需存在实际相交或重叠区域
- 可通过
Collider2D.IsTouching()
方法检测实时接触状态
二、Rigidbody2D组件
1、Body Type 刚体/身体类型
1.1 Dynamic 动态
动态类型,受重力和力的影响移动和旋转。
(1)Material 材质
在刚体上设置了物理材质,如果子物体有碰撞器但是没有设置材质则会用刚体的物理材质。
如果不设置,将使用在Physics 2D窗口中设置的默认材质。
物理材质的使用优先级:2D碰撞器上指定的2D物理材质 -> 2D刚体上指定的2D物理材质 -> Physics 2D窗口指定的2D默认物理材质
(2)Simulated 模拟的
- 如果希望2D刚体以及所有子对象2D碰撞器和2D关节都能模拟物理效果,需要启用该选项。
(3)Use Auto Mass 使用自动质量
- 是否使用自动质量。
(4)Mass 质量
(5)Linear Drag 线性阻尼
- 影响位置移动的阻力系数。
(6)Angular Drag 角阻力
- 影响旋转移动的阻力系数。
(7)Gravity Scale 重力大小
- 受重力影响的程度。
(8)Collision Detection 碰撞检测
碰撞检测算法。
- Discrete 离散的:离散检测算法,只会用新位置进行计算,速度过快时会穿过。
- Continuous 持续的:连续检测算法,计算量更大,但是不会发生穿过的情况。
(9)Sleeping Mode 休眠模式
对象处于静止状态时进入睡眠模式的选择。
- Never Sleep 从不休眠:从不休眠,会一直进行检测计算,性能消耗较大。
- Start Awake 开始唤醒:最初处于唤醒状态。
- Start Asleep 开始休眠:最初处于睡眠状态,但是可以被碰撞唤醒。
(10)Interpolate 插值
物理更新间隔之间的插值运算。
- None 无:不应用移动平滑。
- Interpolate插值:根据前一帧进行平滑处理。
- Extrapolate 外推:根据后一帧位置进行平滑处理。