ArticulationBody.AddForce
Declaration
public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);Параметры
| Параметр | Описание |
|---|---|
| сила | Вектор силы, подлежащий применению. |
| режим | Тип применяемого усилия. |
Описание
Применяет силу к ArticulationBody.
Обратите внимание, что сила накапливается на протяжении всего периода симуляции. Она физически приложена к сочленению только в ходе симуляции, после чего FixedUpdate вызывался скрипт. Указание ForceMode mode позволяет изменить тип силы на Ускорение, Импульс или Изменение скорости.
Вы можете применить силу только к активному ArticulationBody. Если a GameObject является неактивным, AddForce Кроме того, ArticulationBody должен быть подвижным (не может быть неподвижным).
ForceMode.Force и ForceMode.Acceleration режимы изменяют линейную скорость в секунду аккумулятора и ForceMode.Impulse и ForceMode.VelocityChange модифицировать аккумулятор линейной скорости на шаг. Смешивание этих двух групп ForceModes не работает для Артикулирующих Тел и приведет к применению только аккумулятора Линейной Скорости в секунду.
Для получения дополнительной информации о том, как ForceMode влияет на скорость, см. Rigidbody.AddForce.
По умолчанию состояние ArticulationBody настроено на пробуждение при приложении силы, если только сила не Vector3.zero.
Единица измерения — Н (ньютон).
Дополнительные ресурсы: AddForceAtPosition, AddRelativeForce, AddTorque.
В данном примере применяется нагрузка вперед на GameObject's ArticulationBody.
using UnityEngine;
using UnityEngine.InputSystem;
public class Example : MonoBehaviour
{
ArticulationBody m_ArticulationBody;
public float m_Thrust = 20f;
void Start()
{
//Fetch the ArticulationBody from the GameObject with this script attached
m_ArticulationBody = GetComponent<ArticulationBody>();
}
void FixedUpdate()
{
if (Keyboard.current.spaceKey.isPressed)
{
//Apply a force to this ArticulationBody in the direction of this GameObject's up-axis
m_ArticulationBody.AddForce(transform.up * m_Thrust);
}
}
}