Rigidbody组件

  

属性 释义 说明
Mass 质量 刚体的质量。
Drag 阻力 影响位置运动的阻力系数。
Angular Drag 角阻力 影响旋转运动的阻力系数。
Use Gravity 使用重力 物体是否受到重力的影响。
Is Kinematic 是运动学的 是否受物理系统影响。

Interpolate

  • None
  • Interpolate
  • Extrapolate

插值

  • 插值
  • 外推
定义游戏对象的运动是如何在物理更新之间插入的(当运动趋于颠簸时有用)。

Collision Detection

  • Discrete
  • Continuous
  • Continuous Dynamic
  • Continuous Speculative

碰撞检测

  • 离散的
  • 持续
  • 连续动态
  • 连续投机
定义碰撞器之间是如何检测碰撞的。

Constraints

  • Freeze Position
  • Freeze Rotation

约束

  • 冻结位置
  • 冻结旋转
限制物体受力后移动与旋转的轴向
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);

摘要:对刚体施加一个模拟爆炸效果的力。
参数:

  • explosionForce:爆炸力的大小(可由距离改变)。
  • explosionPosition:爆炸产生影响的球体的中心,即爆炸点。
  • explosionRadius:爆炸产生影响的球体的半径,即爆炸波及范围。
  • upwardsModifier:类似爆炸时对物体产生的向上的推力。
  • mode:把力施加到目标物体上的方法。
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);

摘要:给刚体添加一个力。

参数:

  • force:添加到刚体上的相对于世界坐标的力的向量(向量是有方向和大小的)。
  • mode:施加的力的类型。
  • x:沿世界x轴的力的大小。
  • y:沿世界y轴的力的大小。
  • z:沿世界z轴的力的大小。

public void AddForceAtPosition(Vector3 force, Vector3 position, [DefaultValue("ForceMode.Force")] ForceMode mode);

public void AddForceAtPosition(Vector3 force, Vector3 position);

摘要:给刚体上某位置/某点添加力。如果此位置不是刚体重心或此力的向量不经过重心,物体会在受力后发生旋转。
参数:

  • force:添加到刚体上的相对于世界坐标的力的向量。
  • position:相对于世界坐标的位置。
  • mode:施加的力的类型。

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);

摘要:向刚体添加一个相对于其自身坐标系/局部坐标系的力。
参数:

  • force:相对于局部坐标系中的力的向量。
  • mode:施加的力的类型。
  • x:沿局部x轴的力的大小。
  • y:沿局部y轴的力的大小。
  • z:沿局部z轴的力的大小。

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);

摘要:向刚体添加一个相对于其自身坐标系/局部坐标系的扭矩。
参数:

  • x:沿局部x轴的扭矩大小。
  • y:沿局部y轴的扭矩大小。
  • z:沿局部z轴的扭矩大小。
  • mode:施加的力的类型。
  • 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);

摘要:向刚体添加一个相对于世界坐标系的扭矩。

  • x:沿世界x轴转矩的大小。
  • y:沿世界y轴转矩的大小。
  • z:沿世界z轴转矩的大小。
  • mode:施加的力的类型。
  • torque:相对于世界坐标系的力矩向量。

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);

摘要:将刚体移动到指定位置。

参数:

  • position:刚体对象的新位置。

public void MoveRotation(Quaternion rot);

摘要:将刚体旋转到指定角度。

参数:

  • 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);

摘要:扫描监测。检测刚体的某方向上是否有碰撞器。

参数:

  • direction:监测的方向。
  • hitInfo:监测到的碰撞器的信息。
  • maxDistance:最远监测范围。
  • 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);

摘要:扫描监测。检测刚体的某方向上是否有碰撞器并获取所有监测到的碰撞器信息。

参数:

  • direction:监测的方向。
  • maxDistance:最远监测范围。
  • queryTriggerInteraction:指定该监测是否应启用触发器。

public void WakeUp();

摘要:唤醒刚体。

Unity 物理系统:Rigidbody(刚体)相关推荐

  1. Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)

    Unity物理系统中碰撞体.刚体.isKinematic.isTrigger的关系 写在前面 产生碰撞的条件 产生触发的条件 实验一:蓝块(碰撞体).红块(碰撞体) 实验二:蓝块(碰撞体).红块(碰撞 ...

  2. Unity 物理系统 -- 碰撞体简介(碰撞、触发条件)

    Unity 物理系统 -- 碰撞体简介(碰撞.触发条件) 几个常用的碰撞体: Box Collider:盒碰撞体,盒碰撞体是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可用作门.墙 ...

  3. Unity 物理系统

    Unity物理系统 ##1.人机交互 ++1.1.外部输入设备 ++++键盘 ++++触屏 ++++摇杆 ++++鼠标 ++1.2.Input类简介 ++++Input类是输入系统的接口,使用这个类能 ...

  4. unity 计时器_如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(二)

    上一期中,我们完成了角色在没有任何输入的情况下实现了站立平衡,这期,我们就来聊一下角色的运动吧. 玄夜smile:如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(一) ,还没 ...

  5. Unity物体系统rigidbody和collider

    刚体 rigidbody rigid僵化的.坚硬的 rigidbody 刚体 通常把在物理作用下,物体的形状和大小保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体 可以为游戏 ...

  6. Unity 物理系统 -- 刚体简介

    刚体(RigidBody) 在Unity理引擎中,使用刚体(RigidBody)来模拟这种物理效果,当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟.同时我们也可以给这个对象 ...

  7. Unity基础 3.3 2D物理系统 :刚体

    EF提示一例对一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性的解决 可能是实体集名称和数据库不符合

  8. Unity物理系统-物理材质-Collider碰撞体的弹力不够大如何处理

    物理材质Physic Material: 当碰撞器发生碰撞的时候,具有该材质的游戏物体就会具有该材质的属性: Step1:在Project窗口下新建Physic Material(命名为mat),并更 ...

  9. 【unity物理系统】人物乳摇的实现

    首先找到人物胸部的顶点骨骼位置,拷贝一下 如图所示 然后在原物体上挂栽如下脚本 using System.Collections; using System.Collections.Generic; ...

最新文章

  1. python中bin函数的用法_Python 3标准库用法--ascii()、bin()、breakpoint()函数
  2. TensorFlow之conv2d函数解析
  3. About Gnu Linker2
  4. 如何理解android的函数,通过Android源码理解回调函数
  5. Magento: 单产品(product)或者当前类别(category)最大和最小价格 Min/Max Product Price in a Category...
  6. Python多进程读写文件操作
  7. 【linux】——环境变量
  8. 令人期待的php7.4,PHP7.4新特性
  9. android volley 线程,android第三方框架(一)过时的框架volley
  10. mysql 1130本地连接_mysql ERROR 1130 问题解决方案
  11. C++调用函数模仿数字钟表
  12. php.ini 开启zend,php之ZendFramewor篇(1)application.ini配置说明
  13. RejectedExecutionException 分析
  14. FFmpeg —— MP4文件提取h264文件
  15. OpenGL GLM 环境配置
  16. 数据结构课程设计项目2:校园导游咨询-预习报告
  17. 多对多关系需要建立中间表_【数据库基础】为什么需要三张表之多对多表结构设计...
  18. 腾讯云内容生态助力猿辅导,线上线下全方位推动教育云进入快车道
  19. 为什么“高大上”的算法工程师变成了数据民工?
  20. python回调函数实例详解_python 简单的例子下详解回调函数

热门文章

  1. CF1060E Sergey and Subway
  2. Python AutoCAD 设置
  3. 倍福(Beckhoff) 软件及资料分享
  4. 秒懂 回归方程 回归分析法 逻辑回归 的含义 以及 回归的来源
  5. 计算机专业进银行难度,银行考试计算机是什么难度?一般考哪些题型?
  6. OpenCV双目相机的标定C++
  7. 双目立体视觉笔记(二)
  8. java实现strcpy的函数原型_strcpy函数的实现
  9. 网页音乐 最小化后自动暂停_当其他声音开始播放时,如何自动暂停音乐
  10. End-to-End Semi-Supervised Object Detection with Soft Teacher 解读