Rigidbody.AddTorque
Declaration
public void AddTorque(Vector3 torque, ForceMode mode = ForceMode.Force);Параметры
| Параметр | Описание |
|---|---|
| крутящий момент | Вектор крутящего момента в мировых координатах. |
| режим | Тип крутящего момента, который должен применяться. |
Описание
Добавляет крутящий момент к жесткому корпусу.
Силу можно применять только к активному жесткому телу. Если GameObject неактивен, AddTorque не имеет эффекта.
Эффекты крутящих моментов, применяемые с помощью этой функции, накапливаются в момент вызова. Физическая система применяет эффекты во время следующего запуска симулирования (либо после FixedUpdate, либо когда скрипт явно вызывает метод Physics.Simulate). Поскольку эта функция имеет различные режимы, система физики накапливает только полученное изменение угловой скорости, а не переданные значения крутящего момента. Предполагая, что deltaTime (DT) равно длине шага симулирования (Time.fixedDeltaTime), а масса равна массе Rigidbody, к которому применяется крутящий момент, вот как изменение угловой скорости рассчитывается для всех режимов:
- ForceMode.Force: интерпретирует входные данные как крутящий момент (измеряемый в ньютон-метрах) и изменяет угловую скорость на величину крутящего момента * DT / инерция. Эффект зависит от длины шага моделирования и массы тела.
- ForceMode.Acceleration: интерпретирует параметр как угловое ускорение (измеряемое в радианах в секунду в квадрате) и изменяет угловую скорость на величину крутящего момента * DT. Эффект зависит от длины шага моделирования, но не зависит от массы тела.
- ForceMode.Impulse: интерпретирует параметр как угловой момент (измеряемый в килограммах-метрах-квадратах в секунду) и изменяет угловую скорость на величину крутящего момента / инерции. Эффект зависит от массы тела, но не зависит от длины шага симулирования.
- ForceMode.VelocityChange: интерпретирует параметр как прямое изменение угловой скорости (измеряется в радианах в секунду), и изменяет угловую скорость на величину крутящего момента. Эффект не зависит от массы тела и длины шага симулирования.
Пробуждает Rigidbody по умолчанию. Если величина крутящего момента равна нулю, то Rigidbody не будет пробуждаться.
Дополнительные ресурсы: AddRelativeTorque, AddForce.
// Rotate an object around its Y (upward) axis in response to // left/right controls.
using UnityEngine; using UnityEngine.InputSystem;
public class ExampleClass : MonoBehaviour { private float torque = 4; private Rigidbody rb; void Awake() { rb = GetComponent<Rigidbody>(); } void FixedUpdate() { float turnInput = Keyboard.current.spaceKey.isPressed ? 1f : 0f;
rb.AddTorque(Vector3.up * torque * turnInput * Time.fixedDeltaTime); } }
Declaration
public void AddTorque(float x, float y, float z, ForceMode mode = ForceMode.Force);Параметры
| Параметр | Описание |
|---|---|
| x | величина крутящего момента вдоль мировой оси x. |
| y | Размер крутящего момента вдоль мировой оси y. |
| z | Размер крутящего момента вдоль мировой оси z. |
| режим | Тип крутящего момента, который должен применяться. |
Описание
Добавляет крутящий момент к жесткому корпусу.
Силу можно применять только к активному жесткому телу. Если GameObject неактивен, AddTorque не имеет эффекта.
Пробуждает Rigidbody по умолчанию. Если величина крутящего момента равна нулю, то Rigidbody не будет пробуждаться.