Unity学习记录-物理系统
Unity学习记录-物理系统
Tag和Layer
Tag:用于给GameObject分类
- 是一个
string - 每一个GameObject都有一个Tag,默认为
Untagged - Tag可以用来判断一个物体是否属于某分类,也可以用于寻找物体
1 | //通过Tag来搜索物体 |
Layer
- 是一个
int - 每个GameObject都有一个Layer,默认为
Default - 可以让相机只渲染一些Layer,可以让物理运算只在一些Layer上进行
- 最多可以有32个Layer
1 | //访问Layer |
Layer和LayerMask
Layer是标准整数,LayerMask是格式化为位掩码的整数,以0表示排除的Layer,以1表示选中的Layer。在计算机中int表示的最大数值为2147483647,即2^31,有32个bit,所以Unity最多可以有32个Lager。
将Layer转化为LayerMask:使用左移运算符和或运算符
1 | //第9层的LayerMask |
RigidBody
刚体,定义了一个物体的物理行为
RigidBody2D的三种行为模式:
- Dynamic:完全参与物理模拟,例如掉落物
- Kinematic:不会主动移动,需要代码去调整,例如由程序驱动的角色移动
- Static:完全不会移动,例如地面和墙壁
RigidBody.AddForce:为刚体添加力
- 第一个参数:力的方向
- 第二个参数ForceMode:力的模式:
- ForceMode.Force:考虑刚体的质量
- **ForceMode.Acceleration:**添加加速度,不考虑质量
- ForceMode.Impulse:瞬时的力,考虑质量
- ForceMode.VelocityChange:添加一个瞬时的速度,不考虑质量
- 在2D物理中可以使用ForceMode2D来代替ForceMode
Collider&Trigger
定义了物体的物理体积
有两种模式:Collider(有物理体积)和 Trigger(无物理体积)
事件函数:
1 | void OnCollisionEnter2D() //在刚体碰到时触发一次 |
Trigger同理
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





