Параметры
force | Компоненты силы по осям X и Y. |
mode | Метод, используемый для приложения указанной силы. |
Описание
Применяет силу к твердому телу.
Сила задается двумя отдельными компонентами в направлениях X и Y (в 2D-физике нет направления Z). Объект будет ускоряться под действием силы по закону сила = масса x ускорение - чем больше масса, тем большая сила требуется для разгона до заданной скорости.
Если вы не укажете ForceMode2D, будет использоваться значение по умолчанию. По умолчанию в этом случае используется ForceMode2D.Force, который увеличивает силу с течением времени, используя массу.
Чтобы использовать приведенные ниже примеры сценариев, перетащите выбранный сценарий на спрайт в иерархии. Убедитесь, что Sprite имеет компонент Rigidbody2D.
Смотрите так же: AddForceAtPosition, AddTorque, mass, velocity, AddForce, ForceMode2D.
// Спрайт упадет под своим весом. Через короткое время
// спрайт начнет свое движение вверх из-за силы тяги, которая
// добавляется в обратном направлении.
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour
{
public Texture2D tex;
private Rigidbody2D rb2D;
private Sprite mySprite;
private SpriteRenderer sr;
private float thrust = 1f;
void Awake()
{
sr = gameObject.AddComponent<SpriteRenderer>();
rb2D = gameObject.AddComponent<Rigidbody2D>();
}
void Start()
{
mySprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, 128.0f, 128.0f), new Vector2(0.5f, 0.5f), 100.0f);
sr.color = new Color(0.9f, 0.9f, 0.5f, 1.0f);
sr.sprite = mySprite;
transform.position = new Vector3(0.0f, -2.0f, 0.0f);
}
void FixedUpdate()
{
rb2D.AddForce(transform.up * thrust);
// Alternatively, specify the force mode, which is ForceMode2D.Force by default
rb2D.AddForce(transform.up * thrust, ForceMode2D.Impulse);
}
}