【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody2D)、Collision2D碰撞器、2d物理材质、ConstantForce2D恒定力

考虑到每个人基础可能不一样,且并不是所有人都有同时做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 外推:根据后一帧位置进行平滑处理。

猜你喜欢

转载自blog.csdn.net/qq_36303853/article/details/146489231
今日推荐