Rigidbody.AddForceAtPosition
Declaration
public void AddForceAtPosition(Vector3 force, Vector3 position, ForceMode mode = ForceMode.Force);Параметры
| Параметр | Описание |
|---|---|
| сила | Вектор силы в мировых координатах. |
| должность | Положение в мировых координатах. |
Описание
Применяет force на position. В результате это будет применять крутящий момент и силу на объект.
Для реалистичных эффектов position Это наиболее часто используется для взрывов. При применении взрывов лучше применять силы на несколько кадров, а не только на один. Обратите внимание, что при применении взрывов на несколько кадров силы должны быть примерно в пределах поверхности жесткого тела. position находится далеко от центра жесткого тела, то приложенный крутящий момент будет нереально большим.
Усилие может быть приложено только к активному жесткому телу. GameObject является неактивным, AddForceAtPosition не имеет никакого эффекта.
Пробуждает Rigidbody по умолчанию. Если размер силы равен нулю, то Rigidbody не будет пробудиться.
Для получения дополнительной информации о том, как ForceMode влияет на скорость, см. Rigidbody.AddForce.
Примечание: Если вы используете ForceMode.Acceleration или ForceMode.VelocityChange, сила, прилагаемая AddForceAtPosition масштабируется по матрице тензора инерции мирового пространства.
Дополнительные ресурсы: AddForce, AddRelativeForce, AddTorque, inertiaTensor
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void ApplyForce(Rigidbody body) { Vector3 direction = body.transform.position - transform.position; body.AddForceAtPosition(direction.normalized, transform.position); } }