Version: 2021.2
public void AddForce (Vector3 force, ForceMode mode= ForceMode.Force);

参数

force 力矢量(世界坐标)。
mode 要施加的力的类型。

描述

Rigidbody 添加力。

沿 force 矢量的方向连续施加力。可以指定 ForceMode /mode/,以将力的类型更改为 Acceleration、Impulse 或 Velocity Change。

施加的力在 FixedUpdate 中计算,或通过显式调用 Physics.Simulate 方法来计算。

力只能施加于处于活动状态的刚体。如果 GameObject 处于非活动状态,则 AddForce 没有效果。此外,刚体不能是运动刚体。

默认情况下,一旦施加力(Vector3.zero 力除外),刚体的状态就会被设置为唤醒。

另请参阅:AddForceAtPositionAddRelativeForceAddTorque

该示例向 GameObject 的 Rigidbody 施加前进力。

using UnityEngine;

public class Example : MonoBehaviour { Rigidbody m_Rigidbody; public float m_Thrust = 20f;

void Start() { //Fetch the Rigidbody from the GameObject with this script attached m_Rigidbody = GetComponent<Rigidbody>(); }

void FixedUpdate() { if (Input.GetButton("Jump")) { //Apply a force to this Rigidbody in direction of this GameObjects up axis m_Rigidbody.AddForce(transform.up * m_Thrust); } } }

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

参数

x 沿世界 X 轴的力大小。
y 沿世界 Y 轴的力大小。
z 沿世界 Z 轴的力大小。
mode 要施加的力的类型。

描述

Rigidbody 添加力。

该示例向 GameObject 的 Rigidbody 施加沿 Z 轴的 Impulse 力。

using UnityEngine;

public class Example : MonoBehaviour { public float thrust = 1.0f; public Rigidbody rb;

void Start() { rb = GetComponent<Rigidbody>(); rb.AddForce(0, 0, thrust, ForceMode.Impulse); } }