Rigidbody.AddForce

对刚体施加力

定义

public void AddForce (Vector3 force, ForceMode mode = ForceMode.Force);
参数名类型必要说明
forceVector3世界坐标下表示力方向和大小的矢量
modeForceMode施加力的模式,默认 ForceMode.Force
ForceMode.Force:利用刚体的质量向刚体添加一个连续的力
ForceMode.Acceleration:向刚体添加一个连续的加速度,忽略它的质量
ForceMode.Impulse:利用刚体的质量向刚体添加一个瞬时的力
ForceMode.VelocityChange:给刚体添加一个瞬时的加速度,忽略它的质量
public void AddForce (float x, float y, float z, ForceMode mode = ForceMode.Force);
参数名类型必要说明
xfloat沿世界 x 轴的力大小
yfloat沿世界 y 轴的力大小
zfloat沿世界 z 轴的力大小
modeForceMode施加力的模式,默认 ForceMode.Force
ForceMode.Force:利用刚体的质量向刚体添加一个连续的力
ForceMode.Acceleration:向刚体添加一个连续的加速度,忽略它的质量
ForceMode.Impulse:利用刚体的质量向刚体添加一个瞬时的力
ForceMode.VelocityChange:给刚体添加一个瞬时的加速度,忽略它的质量

示例:使用表示力方向和大小的矢量

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    public Rigidbody myRigidbody;
    public float myThrust = 20f;

    private void Start()
    {
        myRigidbody = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        if (Input.GetButton("Jump"))
        {
            // 对这个物体施加向上的力
            myRigidbody.AddForce(transform.up * myThrust);
        }
    }
}

示例:指定 x、y、z 各轴的大小

using UnityEngine;

public class Example : MonoBehaviour
{
    public Rigidbody myRigidbody;
    public float myThrust = 10f;

    private void Start()
    {
        myRigidbody = GetComponent<Rigidbody>();

        // 给物体一个沿 z 轴方向的瞬时力
        myRigidbody.AddForce(0, 0, myThrust, ForceMode.Impulse);
    }
}