Unity 物理系统:Rigidbody(刚体)
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);
摘要:对刚体施加一个模拟爆炸效果的力。
参数:
- 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(刚体)相关推荐
- Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)
Unity物理系统中碰撞体.刚体.isKinematic.isTrigger的关系 写在前面 产生碰撞的条件 产生触发的条件 实验一:蓝块(碰撞体).红块(碰撞体) 实验二:蓝块(碰撞体).红块(碰撞 ...
- Unity 物理系统 -- 碰撞体简介(碰撞、触发条件)
Unity 物理系统 -- 碰撞体简介(碰撞.触发条件) 几个常用的碰撞体: Box Collider:盒碰撞体,盒碰撞体是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可用作门.墙 ...
- Unity 物理系统
Unity物理系统 ##1.人机交互 ++1.1.外部输入设备 ++++键盘 ++++触屏 ++++摇杆 ++++鼠标 ++1.2.Input类简介 ++++Input类是输入系统的接口,使用这个类能 ...
- unity 计时器_如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(二)
上一期中,我们完成了角色在没有任何输入的情况下实现了站立平衡,这期,我们就来聊一下角色的运动吧. 玄夜smile:如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(一) ,还没 ...
- Unity物体系统rigidbody和collider
刚体 rigidbody rigid僵化的.坚硬的 rigidbody 刚体 通常把在物理作用下,物体的形状和大小保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体 可以为游戏 ...
- Unity 物理系统 -- 刚体简介
刚体(RigidBody) 在Unity理引擎中,使用刚体(RigidBody)来模拟这种物理效果,当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟.同时我们也可以给这个对象 ...
- Unity基础 3.3 2D物理系统 :刚体
EF提示一例对一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性的解决 可能是实体集名称和数据库不符合
- Unity物理系统-物理材质-Collider碰撞体的弹力不够大如何处理
物理材质Physic Material: 当碰撞器发生碰撞的时候,具有该材质的游戏物体就会具有该材质的属性: Step1:在Project窗口下新建Physic Material(命名为mat),并更 ...
- 【unity物理系统】人物乳摇的实现
首先找到人物胸部的顶点骨骼位置,拷贝一下 如图所示 然后在原物体上挂栽如下脚本 using System.Collections; using System.Collections.Generic; ...
最新文章
- python中bin函数的用法_Python 3标准库用法--ascii()、bin()、breakpoint()函数
- TensorFlow之conv2d函数解析
- About Gnu Linker2
- 如何理解android的函数,通过Android源码理解回调函数
- Magento: 单产品(product)或者当前类别(category)最大和最小价格 Min/Max Product Price in a Category...
- Python多进程读写文件操作
- 【linux】——环境变量
- 令人期待的php7.4,PHP7.4新特性
- android volley 线程,android第三方框架(一)过时的框架volley
- mysql 1130本地连接_mysql ERROR 1130 问题解决方案
- C++调用函数模仿数字钟表
- php.ini 开启zend,php之ZendFramewor篇(1)application.ini配置说明
- RejectedExecutionException 分析
- FFmpeg —— MP4文件提取h264文件
- OpenGL GLM 环境配置
- 数据结构课程设计项目2:校园导游咨询-预习报告
- 多对多关系需要建立中间表_【数据库基础】为什么需要三张表之多对多表结构设计...
- 腾讯云内容生态助力猿辅导,线上线下全方位推动教育云进入快车道
- 为什么“高大上”的算法工程师变成了数据民工?
- python回调函数实例详解_python 简单的例子下详解回调函数
热门文章
- CF1060E Sergey and Subway
- Python AutoCAD 设置
- 倍福(Beckhoff) 软件及资料分享
- 秒懂 回归方程 回归分析法 逻辑回归 的含义 以及 回归的来源
- 计算机专业进银行难度,银行考试计算机是什么难度?一般考哪些题型?
- OpenCV双目相机的标定C++
- 双目立体视觉笔记(二)
- java实现strcpy的函数原型_strcpy函数的实现
- 网页音乐 最小化后自动暂停_当其他声音开始播放时,如何自动暂停音乐
- End-to-End Semi-Supervised Object Detection with Soft Teacher 解读