Unity中使用Rigdbody来给物体添加真是的移动旋转效果

时间:2024-04-08 16:18:45

Unity中使用Rigdbody来给物体添加真是的移动旋转效果

游戏对象添加Rigidbody组件后即具备物理属性,可以产生真是的物理效果。使用刚体时应注意,父物体和子物体不应同时具有刚体,也 不应该缩放刚体的父级。

刚体的变量学习

 类型                       变量

 Vector3                velocity                                 刚体的速度向量

 Vector3                angularVelocity                   刚体的角速度向量。

 float                     drag                                       物体的阻力

 float                     angularDrag                         物体的角阻力

 float                     mass                                     刚体的质量

 bool                      useGravity                          是否受重力影响

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

 

bool                  freezeRotation                   冻结旋转,可以让物体在X Y  Z轴上不让他旋转


bool                  freezePosition                     冻结物体在X或者Y或者Z轴的移动


collisionDetectionMode :CollisionDetectionMode

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

Vector3             centerOfMass                     

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


方法的使用

这个是物体沿着世界坐标轴进行移动和旋转

public void AddForce();     //沿着世界坐标轴进行移动,和自身坐标轴没有过关系
public void AddTorque();   //沿着世界坐标轴进行旋转  他们都有四种重载


下面是沿着刚体的自身坐标轴移动或者旋转
public void AddRelativeForce(); // 沿着物体的自身坐标轴进行移动

public void AddRelativeTorque(); //沿着物体的自身坐标轴进行旋转  他们都有四种重载

向物体表面施加力

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

爆炸

AddExplosionForce ();
应用一个力到刚体来模拟爆炸效果。爆炸力将随着到刚体的距离线形衰减。
explosionForce **力
explosionPosition 爆炸位置
explosionRadius **半径,为0时表示无穷大
upwardsModifier 可以理解为爆炸产生的向上冲击波的衰减值。值越大,威力越小。
function ClosestPointOnBounds (position :Vector3) : Vector3
计算刚体表面离position最近的点。可用于计算作用到刚体表面上一个点的爆炸力。


获取速度
function GetRelativePointVelocity(relativePoint : Vector3) : Vector3
获取刚体上的点相对本地坐标系的速度。获取的速度有考虑刚体的角速度。
function GetPointVelocity (worldPoint :Vector3) : Vector3
获取刚体上的点相对世界坐标系的速度。获取的速度有考虑刚体的角速度。

休眠
function Sleep ();
强制一个刚体休眠至少一帧。刚体休眠有利于性能优化
function IsSleeping () 
判断刚体是否在休眠
function WakeUp () 
强制唤醒一个刚体


小白的学习之路,这是我在学习过程中自己总结的,如果有不对的地方还请朋友们指出,我一定认真领教,谢谢!!