Rigidbody组件
属性 | 释义 | 说明 |
Mass | 质量 | 刚体的质量。 |
Drag | 阻力 | 影响位置运动的阻力系数。 |
Angular Drag | 角阻力 | 影响旋转运动的阻力系数。 |
Use Gravity | 使用重力 | 物体是否受到重力的影响。 |
Is Kinematic | 是运动学的 | 是否受物理系统影响。 |
Interpolate
|
插值
|
定义游戏对象的运动是如何在物理更新之间插入的(当运动趋于颠簸时有用)。 |
Collision Detection
|
碰撞检测
|
定义碰撞器之间是如何检测碰撞的。 |
Constraints
|
约束
|
限制物体受力后移动与旋转的轴向 |
Info | 信息 | 当前设置信息 |
Rigidbody类
属性
public Vector3 angularVelocity { get; set; } | 刚体的角速度,单位为弧度/秒。 |
public float drag { get; set; } | 物体的阻力。 |
public float angularDrag { get; set; } | 物体的角阻力。 |
public float mass { get; set; } | 刚体的质量。 |
public bool useGravity { get; set; } | 刚体是否受到重力影响。 |
public float maxDepenetrationVelocity { get; set; } | 刚体在脱离穿透状态时的最大速度。 设置此属性,可以使刚体脱离碰撞状态时更平稳。 |
public bool isKinematic { get; set; } | 刚体是否受到物理影响。 |
public bool freezeRotation { get; set; } | 是否允许/冻结物体旋转。 |
public RigidbodyConstraints constraints { get; set; } | 是否约束刚体在某个轴上的移动或旋转。 |
public CollisionDetectionMode collisionDetectionMode { get; set; } | 刚体的碰撞检测模式。 |
public Vector3 centerOfMass { get; set; } | 相对于transform原点的质量中心。 |
public Vector3 worldCenterOfMass { get; } | 刚体在世界空间中的质量中心(只读)。 |
public Quaternion inertiaTensorRotation { get; set; } | 转动的惯性张量。 |
public Vector3 inertiaTensor { get; set; } | 质量相对于质心的对角惯性张量。 |
public bool detectCollisions { get; set; } | 是否应该启用碰撞检测(默认情况下总是启用)。 |
public Vector3 position { get; set; } | 刚体的位置。 |
public Quaternion rotation { get; set; } | 刚体的旋转。 |
public RigidbodyInterpolation interpolation { get; set; } | 插值:允许刚体以固定的帧率平滑物理运行效果。 起到运动时平滑的效果。 |
public int solverIterations { get; set; } | 求解迭代次数: 确定关节和接触点如何精确地计算。如果关节刚体有震荡和行为怪异,为solverIterationCount设置一个较高的值将改善他们的稳定性。 |
public int solverVelocityIterations { get; set; } | 求解速度迭代:遇到关节刚体或布偶在碰撞后移动太多的问题,可以尝试增加这个值。 |
public Vector3 velocity { get; set; } | 刚体的速度。 |
public float sleepThreshold { get; set; } | 质量归一化的能量阈值,低于这个阈值,物体就会进入睡眠状态。 |
public float maxAngularVelocity{ get; set; } | 刚体的最大角速度。(默认7)范围{0,无穷大}。 |
方法
public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, [DefaultValue("0.0F")] float upwardsModifier, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, float upwardsModifier);
public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius);
摘要:对刚体施加一个模拟爆炸效果的力。
参数:
ForceMode | 力的模式(枚举) |
Force | 给刚体添加一个连续的力,使用刚体的质量。 |
Impulse | 给刚体添加一个瞬间的力,使用刚体的质量。 |
VelocityChange | 给刚体添加一个瞬间的加速度,忽略刚体的质量。 |
Acceleration | 给物体添加一个持续的加速度,忽略刚体的质量。 |
public void AddForce(Vector3 force, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddForce(Vector3 force);
public void AddForce(float x, float y, float z);
public void AddForce(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode);
摘要:给刚体添加一个力。
参数:
public void AddForceAtPosition(Vector3 force, Vector3 position, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddForceAtPosition(Vector3 force, Vector3 position);
摘要:给刚体上某位置/某点添加力。如果此位置不是刚体重心或此力的向量不经过重心,物体会在受力后发生旋转。
参数:
public void AddRelativeForce(Vector3 force, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddRelativeForce(Vector3 force);
public void AddRelativeForce(float x, float y, float z);
public void AddRelativeForce(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode);
摘要:向刚体添加一个相对于其自身坐标系/局部坐标系的力。
参数:
public void AddRelativeTorque(float x, float y, float z);
public void AddRelativeTorque(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddRelativeTorque(Vector3 torque, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddRelativeTorque(Vector3 torque);
摘要:向刚体添加一个相对于其自身坐标系/局部坐标系的扭矩。
参数:
public void AddTorque(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddTorque(Vector3 torque);
public void AddTorque(Vector3 torque, [DefaultValue("ForceMode.Force")] ForceMode mode);
public void AddTorque(float x, float y, float z);
摘要:向刚体添加一个相对于世界坐标系的扭矩。
public Vector3 ClosestPointOnBounds(Vector3 position);
摘要:获取指定位置(position)到该刚体附加的碰撞器的最近的点。(可以用来计算受到爆炸伤害时的伤害点数)
public Vector3 GetPointVelocity(Vector3 worldPoint);
摘要:获取刚体某点相对于世界坐标系的速度。
public Vector3 GetRelativePointVelocity(Vector3 relativePoint);
摘要:获取刚体某点相对于局部坐标系的速度。
public bool IsSleeping();
摘要:获取刚体是否处于休眠状态。
刚体休眠完全自动发生。只要刚体的速度低于指定值(Physics.sleepThreshold;/Edit -> Project Settings -> Physics),该刚体就会开始休眠。
休眠是一种优化方式,处于休眠状态中的物体,不会再对其进行碰撞检测和模拟,从而节约大量CPU开销。
public void MovePosition(Vector3 position);
摘要:将刚体移动到指定位置。
参数:
public void MoveRotation(Quaternion rot);
摘要:将刚体旋转到指定角度。
参数:
public void ResetCenterOfMass();
摘要:重置刚体的质心。
public void ResetInertiaTensor();
摘要:重置惯性张量值和旋转。
public void SetDensity(float density);
摘要:设置密度。基于附加的碰撞器假设一个固定的密度来设置质量。用来设置质量,随着碰撞器的尺寸而缩放。
public void Sleep();
摘要:强制刚体休眠至少一帧。
public bool SweepTest(Vector3 direction, out RaycastHit hitInfo);
public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, float maxDistance);
public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, [DefaultValue("Mathf.Infinity")] float maxDistance, [DefaultValue("QueryTriggerInteraction.UseGlobal")] QueryTriggerInteraction queryTriggerInteraction);
摘要:扫描监测。检测刚体的某方向上是否有碰撞器。
参数:
public RaycastHit[] SweepTestAll(Vector3 direction);
public RaycastHit[] SweepTestAll(Vector3 direction, float maxDistance);
public RaycastHit[] SweepTestAll(Vector3 direction, [DefaultValue("Mathf.Infinity")] float maxDistance, [DefaultValue("QueryTriggerInteraction.UseGlobal")] QueryTriggerInteraction queryTriggerInteraction);
摘要:扫描监测。检测刚体的某方向上是否有碰撞器并获取所有监测到的碰撞器信息。
参数:
public void WakeUp();
摘要:唤醒刚体。