版本: Unity 6 (6000.0)
语言英语
  • C#

Rigidbody.AddTorque

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void AddTorque(Vector3 torque, ForceMode mode = ForceMode.Force);

参数

torque 世界坐标系中的扭矩向量。
mode 要应用的扭矩类型。

描述

向刚体添加扭矩。

力只能应用于活动刚体。如果游戏对象处于非活动状态,则 AddTorque 不会产生任何效果。

使用此函数应用的扭矩效果在调用时累积。物理系统在下次模拟运行期间应用这些效果(在FixedUpdate之后,或当脚本显式调用Physics.Simulate方法时)。由于此函数具有不同的模式,因此物理系统仅累积产生的角速度变化,而不是传递的扭矩值。假设 deltaTime (DT) 等于模拟步长(Time.fixedDeltaTime),并且质量等于应用扭矩的刚体的质量,以下是所有模式下如何计算角速度变化:

  • ForceMode.Force:将输入解释为扭矩(以牛顿米为单位),并将角速度更改为 torque * DT / mass 的值。效果取决于模拟步长和物体的质量。
  • ForceMode.Acceleration:将参数解释为角加速度(以度/秒²为单位),并将角速度更改为 torque * DT 的值。效果取决于模拟步长,但不依赖于物体的质量。
  • ForceMode.Impulse:将参数解释为角动量(以千克米²/秒为单位),并将角速度更改为 torque / mass 的值。效果取决于物体的质量,但不依赖于模拟步长。
  • ForceMode.VelocityChange:将参数解释为直接的角速度变化(以度/秒为单位),并将角速度更改为 torque 的值。效果不依赖于物体的质量和模拟步长。

默认情况下唤醒刚体。如果扭矩大小为零,则不会唤醒刚体。

其他资源:AddRelativeTorqueAddForce

// Rotate an object around its Y (upward) axis in response to
// left/right controls.
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public float torque; public Rigidbody rb;

void Start() { rb = GetComponent<Rigidbody>(); }

void FixedUpdate() { float turn = Input.GetAxis("Horizontal"); rb.AddTorque(transform.up * torque * turn); } }

声明

public void AddTorque(float x, float y, float z, ForceMode mode = ForceMode.Force);

参数

x 沿世界 x 轴的扭矩大小。
y 沿世界 y 轴的扭矩大小。
z 沿世界 z 轴的扭矩大小。
mode 要应用的扭矩类型。

描述

向刚体添加扭矩。

力只能应用于活动刚体。如果游戏对象处于非活动状态,则 AddTorque 不会产生任何效果。

默认情况下唤醒刚体。如果扭矩大小为零,则不会唤醒刚体。