【Unity】入门学习笔记180523——API(14)——Rigidbody类——注解

1、关于useGravity、isKinematic和velocity的使用注解

useGravity属性用来确定刚体是否接受重力加速度的感应

isKinematic属性用来确定刚体是否接受动力学模拟,包括重力感应、速度、阻力、质量等物理模拟

isKinematic=true:关闭物理感应

isKinematic=false:接受动力学模拟


2、关于Rigidbody中mass、density及scale之间的关系注解

#若在脚本中未使用Rigidbody.SetDensity(density:float)方法设置刚体的密度,则刚体的质量mass值为在Inspector面板中Mass的大小,此时mass与transform中的scale大小无关

#若在脚本中使用Rigidbody.SetDensity(density:float)方法设置了刚体的密度,则刚体的质量为mass=density*scale.x*scale.y*scale.z,而与Inspector面板中Mass的设置大小无关

#若在脚本中既设置了密度Density,又设置了质量mass,则刚体实际质量值要看脚本中代码执行的前后次序了。若先执行密度设置代码,再执行质量设置代码,则刚体质量便不与密度density及物体放缩值scale有关。相反,若先执行质量设置代码,再执行密度设置代码,则质量设置代码失效

#当两物体发生碰撞时遵守动量守恒定理,则m1*v1+m2*v2=(m1+m2)*v,其中速度v1,v2及v按运动方向分正负号

注意,使用SetDensity请先设定scale值再设置Density


3、关于作用力方式ForceMode的功能注解

ForceMode为枚举类型,用来控制力的作用方式,有4个枚举成员

①ForceMode.Force:默认,使用刚体的质量计算,以每帧间隔时间为单位计算动量

F*t=m*v

②ForceMode.Acceleration:忽略刚体的实际质量而采用默认值1.0f,时间间隔以系统帧频率间隔计算(默认0.02s),即:

f*t=1.0*v

③ForceMode.Impulse:此方式采用瞬间力作用方式,即把t的值默认为1,即:

f*1.0=m*v

④ForceMode.VelocityChange:忽略刚体的实际质量和系统的实际帧频间隔,即:

f*1.0=1.0*v


4、关于OnTriggerXXX和OnCollisionXXX的功能注解

#要激活OnTriggerXXX方法和OnCollisionXXX方法必须使移动的物体中含有Rigidbody组件


猜你喜欢

转载自blog.csdn.net/dylan_day/article/details/80425131
今日推荐