Unity:AddTorque()(增加旋转力矩)
目录
什么是 AddTorque()?
第一性原理出发:什么是 Torque(力矩)?
Torque 公式
Unity 中 AddTorque 的工作原理
参数属性
🔍 Linear Drag(线性阻力)
线性阻力模拟的现实情况:
🔄 Angular Drag(角阻力)
⬇️ Gravity Scale(重力缩放因子)
✅ mass(质量)
✅ inertia(转动惯量,Unity 内部计算)
📘 专业术语解释
Rigidbody2D 中的相关属性
什么是 AddTorque()
?
AddTorque()
是 Unity 中用于对物体施加旋转力矩(Torque)的方法,从而让刚体围绕其中心轴开始旋转。
它是 Rigidbody / Rigidbody2D 的方法之一,作用是让刚体旋转起来,而不是平移。
第一性原理出发:什么是 Torque(力矩)?
在物理学中:
Torque(力矩,中文也叫“转矩”)是使物体产生“旋转加速度”的量。
类比:开门的感觉
想象你要打开一扇门。
-
你把手放在门边缘用力一推,门很容易旋转打开;
-
但你把手放在靠近门轴的地方推,门很难转动。
这说明:
相同的力,距离门轴越远,产生的“转动效果”越强。
这个转动效果就叫Torque(力矩)。
Torque 公式
我们从经典物理公式来看:
τ = r × F
其中:
-
τ
(tau)是力矩(Torque) -
r
是从转轴到施力点的距离(位置向量) -
F
是施加的力(向量) -
×
是叉乘,表示方向性(右手法则)
这意味着:
一个力要想让物体旋转,它不仅要有大小,还要有正确的方向和施力点位置。
Unity 中 AddTorque 的工作原理
在 Unity 中调用:
Rigidbody2D rb;
rb.AddTorque(10f);
就相当于说:
给这个刚体一个大小为 10 的顺时针力矩,让它旋转。
正负号表示旋转方向:
数值 | 方向(以Z轴为旋转轴) |
---|---|
正数(+10f ) | 逆时针旋转(Counterclockwise) |
负数(-10f ) | 顺时针旋转(Clockwise) |
参数属性
属性名 | 中文名 | 控制什么 | 类比 |
---|---|---|---|
mass | 质量 | 物体对加速度的抵抗 | 重物更难推动 |
gravityScale | 重力缩放 | 控制重力影响力的大小 | 让物体掉落更快或更慢 |
linearDrag | 线性阻力 | 控制物体移动减速的快慢 | 像空气阻力或地面摩擦 |
angularDrag | 角阻力 | 控制物体旋转减速的快慢 | 像陀螺的摩擦减速 |
inertia (只读) | 转动惯量 | 控制旋转的“惯性” | 更大更重的轮子转起来慢停下来也慢 |
🔍 Linear Drag(线性阻力)
Linear Drag 是物体移动时遇到的空气阻力/摩擦力,用来减慢它的平移运动。
它模拟的是现实生活中的“空气阻力”或“地面摩擦”,作用方向总是与当前速度方向相反。
线性阻力模拟的现实情况:
情况 | Linear Drag 值 |
---|---|
真空环境,完全无阻力 | 0 |
空气中滑动 | 0.1 ~ 2 |
水中滑动 | 5 ~ 20 |
沙地或粘性液体 | 20+ |
🔄 Angular Drag(角阻力)
Angular Drag 是物体旋转时遇到的“空气摩擦”或“轴摩擦”,减慢它的旋转速度。
如果你用 AddTorque()
让一个轮子旋转,但不想它永远不停,那就靠这个。
类比现实:
-
零角阻力 = 真空中的陀螺,永远旋转
-
高角阻力 = 在沙子里转轮子,几乎不动几圈就停
⬇️ Gravity Scale(重力缩放因子)
Gravity Scale 控制物体受 Unity 世界重力影响的大小。
默认 Unity 的世界重力是:
Physics2D.gravity = new Vector2(0, -9.81f);
所以:
-
如果
gravityScale = 1
,物体受到的重力加速度是 -9.81 -
如果
gravityScale = 2
,它就受到 -19.62 的加速度 -
如果是 0,它就不受重力影响(比如幽灵、漂浮物)
类型 | gravityScale 建议值 |
---|---|
普通角色 | 1.0 |
飘浮生物/飞行物 | 0.0 |
重型机械 | 2.0 ~ 4.0 |
反重力物体 | -1.0 (会上升) |
✅ mass(质量)
-
控制物体受力后产生的加速度(F = m * a)
-
决定撞击时的惯性(大质量 = 撞人更猛)
✅ inertia(转动惯量,Unity 内部计算)
-
控制 Torque 转得快不快
-
大惯量 = 更难旋转/更难停
你不能手动设置 inertia
,但它由物体的 Collider 形状 + mass 决定。
📘 专业术语解释
术语 | 中文 | 含义 |
---|---|---|
Torque | 力矩 / 扭矩 | 一种“使物体旋转”的力,与施力点和轴心的距离有关 |
Rigidbody / Rigidbody2D | 刚体 | Unity 中可以参与物理模拟的对象 |
Angular Velocity | 角速度 | 单位时间内旋转的角度速度,单位是弧度/秒 或 度/秒 |
AddTorque(float torque) | 添加力矩 | 施加一个数值大小的旋转力,正负号决定顺/逆时针方向 |
Rigidbody2D 中的相关属性
如果你用了 AddTorque()
,以下这些属性会受到影响:
属性 | 中文名 | 意义 |
---|---|---|
angularVelocity | 角速度 | 当前旋转速度(°/s) |
inertia | 转动惯量 | 物体对旋转的抵抗能力 |
mass | 质量 | 会影响力矩产生的效果(和惯量一起决定旋转加速度) |