`
stephen830
  • 浏览: 2966875 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

unity——Rigidbody类 (刚体)

 
阅读更多

unity——Rigidbody类

 

转载自 http://hi.baidu.com/quibos/item/0b035e15e63041b499ce33d8

 

游戏对象添加Rigidbody组件后即具备物理属性,当其受力和扭矩影响时可产生更加真实的行为。当操作刚体参数的时候,你应该在FixedUpdate 函数中使用它,物理模拟以离散的时间步执行。FixedUpdate函数在每一步之前被立即调用。使用刚体时应注意,父物体和子物体不应同时具有刚体,也 不应该缩放刚体的父级。

 

变量:

var velocity : Vector3                            刚体的速度向量

var angularVelocity : Vector3               刚体的角速度向量。

var drag : float                                      物体的阻力

var angularDrag : float                         物体的角阻力

var mass : float                                      刚体的质量

var useGravity : bool                             是否受重力影响

var isKinematic : bool                           

       是否是运动学刚体。运动学刚体不受力、碰撞或关节控制,完全由动画或代码(Transform)驱动,但运动学刚体可以通过碰撞或关节影响其他刚体的运动。非运动学刚体则受力、碰撞或关节控制。

var freezeRotation : bool                      冻结旋转,使物理因素不能改变物体的旋转

var collisionDetectionMode :CollisionDetectionMode

       刚 体的碰撞检测模式。为了获得最佳效果,对于快速移动的物体,应设置动态连续碰撞检测模式(ContinuousDynamic),以防止物体还没检测到碰 撞就穿越了被碰撞物体;对于被碰撞物体,应设置连续碰撞检测模式(Continuous,连续碰撞检测是基于网格几何体的静态碰撞)。由于碰撞检测模式的 选择对物理性能有很大的影响,默认情况下,应采用非连续碰撞检测模式(Discrete)。

var centerOfMass : Vector3                     

       重心。如果你不在脚本中设置重心,它将从所有附加到刚体上的碰撞器自动计算。重心的设置关系到物理运动的真实性。

var worldCenterOfMass : Vector3         在世界坐标中刚体的重心。(只读)

var detectCollisions : bool                     碰撞检测是否启用(默认总是启用的)。

var position : Vector3                             

       刚体的位置,只在物理步结束才应用到变换,不能用于连续移动。

var rotation : Quaternion                       刚体的旋转,只在物理步结束才应用到变换,不能用于连续旋转。

var interpolation : RigidbodyInterpolation

刚体插值,用以平滑物理运动的显示效果,默认是关闭的(None)。物理运动以离散的时间步运行,而显卡以可变的帧率渲染,这可能导致物体抖动。对于主角或相机跟随的物体,建议使用插值。

 

函数:

 

移动

function AddForce (force : Vector3, mode :ForceMode = ForceMode.Force) : void

       添加一个力到刚体。作为结果刚体将开始移动。

       枚举类型ForceMode

       值:       Force                      添加一个可持续力到刚体,使用它的质量。

                     Acceleration          添加一个可持续加速度到刚体,忽略它的质量。

                     Impulse                  添加一个瞬间冲击力到刚体,使用它的质量。

                     VelocityChange     添加一个瞬间速度变化给刚体,忽略它的质量。

function AddForce (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

       添加一个力到刚体。作为结果刚体将开始移动。

function AddRelativeForce (force : Vector3,mode : ForceMode = ForceMode.Force) : void

       添加一个力到刚体。相对于本地坐标。

function AddRelativeForce (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

       添加一个力到刚体。相对于本地坐标。

function MovePosition (position : Vector3): void 

       移动刚体到position。

 

旋转

function AddTorque (torque : Vector3, mode: ForceMode = ForceMode.Force) : void

       添加一个转矩到刚体。作为结果刚体将绕着torque轴旋转,torque的长度决定转速。

function AddTorque (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

       添加一个转矩到刚体。作为结果刚体将绕着torque轴旋转,torque的长度决定转速。

function AddRelativeTorque (torque :Vector3, mode : ForceMode = ForceMode.Force) : void 

       添加一个转矩到刚体,相对于本地坐标。

function AddRelativeTorque (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

       添加一个转矩到刚体,相对于本地坐标。

function MoveRotation (rot : Quaternion) :void 

       旋转刚体到rot。

 

向物体表面施加力

function AddForceAtPosition (force :Vector3, position : Vector3, mode : ForceMode = ForceMode.Force) : void 

       在position位置应用force力。作为结果这个将在这个物体上应用一个力矩和力。为了效果的真实性,position的位置应在刚体的表面。

 

爆炸

function AddExplosionForce (explosionForce: float, explosionPosition : Vector3, explosionRadius : float, upwardsModifier: float = 0.0F, mode :ForceMode = ForceMode.Force) : void 

       应用一个力到刚体来模拟爆炸效果。爆炸力将随着到刚体的距离线形衰减。

       explosionForce                             爆破力

       explosionPosition                        爆炸位置

       explosionRadius                           爆破半径,为0时表示无穷大

       upwardsModifier                         可以理解为爆炸产生的向上冲击波的衰减值。值越大,威力越小。

function ClosestPointOnBounds (position :Vector3) : Vector3

       计算刚体表面离position最近的点。可用于计算作用到刚体表面上一个点的爆炸力。

 

获取速度

function GetRelativePointVelocity(relativePoint : Vector3) : Vector3

       获取刚体上的点相对本地坐标系的速度。获取的速度有考虑刚体的角速度。

function GetPointVelocity (worldPoint :Vector3) : Vector3

       获取刚体上的点相对世界坐标系的速度。获取的速度有考虑刚体的角速度。

 

休眠

function Sleep () : void 

       强制一个刚体休眠至少一帧。刚体休眠有利于性能优化

function IsSleeping () : bool 

       判断刚体是否在休眠

function WakeUp () : void

       强制唤醒一个刚体

 

碰撞扫描

function SweepTest (direction : Vector3,out hitInfo : RaycastHit, distance : float = Mathf.Infinity) : bool 

       碰撞扫描,返回是否将要发生碰撞。

       direction                       扫描方向

       hitInfo                           如果将要发生碰撞(即返回true),hitInfo将包含更多碰撞信息

       distance                        扫描长度

function SweepTestAll (direction : Vector3,distance : float = Mathf.Infinity) : RaycastHit[] 

       碰撞扫描,返回所有碰撞点。

分享到:
评论

相关推荐

    Rigidbody:我自己在Unity(C#)中进行的刚体仿真

    刚体 我自己在Unity(C#)中的刚体行为模拟

    Unity3D面试题.pdf

    5. Unity3D中的碰撞体(Collider)和刚体(Rigidbody)有什么区别?它们在游戏物理中的作用是什么? 6. 如何在Unity3D中制作动画?请简要描述Unity3D中动画制作的基本流程。 7. Unity3D中的场景管理是如何实现的?请...

    愤怒的小鸟-非常适合unity初学者练手的项目,学习使用2D场景下的编辑,涉及到简单脚本的编写

    学习如何为小鸟和猪设置刚体(Rigidbody)组件,使其受物理规则影响。 学习如何使用关节(Joint)来模拟物体的连接和约束。 脚本编写: 学习如何使用C#或JavaScript编写简单的脚本,来控制小鸟的射击、移动等行为。 ...

    BezierPhysicTrajectory.unitypackage

    运动轨迹采用的是DOTweenPath的方式进行刚体的运动 Rigidbody.DOPath(Vector3[] v,float t) 运动轨迹这里采用可编辑贝塞尔曲线来确定轨迹 轨道运行结束时,判断结尾运动轨迹来复原原始重力所带来的的向量速度继续...

    Unity3d开发的微信跳一跳小游戏-开发版本 Unity 2017.3

    Unity3d开发的微信跳一跳小游戏_开发版本 Unity 2017.3 本游戏包含的功能 角色跳跃 相机跟随 台子自动生成 死亡判定及重新开始游戏 分数统计 ...刚体Rigidbody组件 动态生成物体 DoTween插件 粒子系统 UGUI

    Unity色子的投掷和点数的获得详析

    前言 前几天需要一个色子的投掷并且获得朝上点数的Unity脚本,在网上找了很多,都是一个模子刻出来的。 对于2018版的我来说,网上找的都是很早就弃用了的老版本。...最后给他加上刚体Rigidbody让色子更加真实。 PS:

    Easy Character Movement 1.8.1.unitypackage

    Easy Character Movement是一种功能强大的高性能,但基于Rigidbody的角色控制器却易于使用。 它可以用于任何类型的角色,从玩家到NPC到敌人,以及各种各样的游戏,例如平台游戏,第一人称视角,第三人称视角,冒险,...

    FPS_Movement_Rigidbody

    简单的FPS运动 一个基于刚体的简单的Unity运动系统。

    MegaFiers - 2 v1.24

    这是Unity 2019以后非常受欢迎的MegaFiers资产的全新版本。它具有完全重写核心系统的功能,以利用Unity Burst和Jobs,所有变形的CPU使用量...包括沿路径行驶的RigidBody汽车的示例 角色控制器遵循样条线示例 样条API

    TDCharacterController2D

    用于与 Unity 的 2D 碰撞器交互的自上而下的角色控制器,无需非运动学刚体。 用于复制默认的函数。 用法 将 TDCharacterController2D.cs 添加到游戏对象。 和将自动添加,Rigidbody2D 将在运行时设置为 ,但您可以...

Global site tag (gtag.js) - Google Analytics