c0d3n4m 发表于 2022-5-10 20:34

Unity3D进阶教程(三)刚体运动,扭矩,物理更新,碰撞

八 刚体的运动


[*]刚体的运动

[*]物理系统的运动
Force力 Velocity速度 Impulse冲量 Accelaration加速度 Angular Velocity角速度 Torque扭矩

[*]unity操作
成为rigidbody
[*]FixedUpdate()
rb.AddForce()



[*]摩擦力
物理材质属性

[*]力与速度
F*T=M*V

[*]FixedUpadte

[*]更新时间
0.2s一次,每秒50次

[*]AddForce()
施加力


[*]加力的方式
ForeMOde.Force作用力 ForceMOde.Acceleration加速度 ForceMode.Impulse冲量 ForceMOde.VelocityChange速度冲量

[*]减速运动
减少速度为0
[*]脚本操作
rb.velocity velocity.magnitude velocity.normalized


[*]运动学刚体

[*]Kinematic不受力的作用
移动方式直接控制position

[*]物理系统三种物体
静物 刚体 运动学刚体


九 (练习)运动小车


[*]添加小车
添加Rigidbody 添加Box Collider

[*]向前运动
设置物理材质
[*]添加运动脚本
AddRelativeForce()自身坐标系施加力


[*]刹车与倒车
条件判断+运动

十 扭矩与转动


[*]扭矩
单位:牛*米

[*]施加扭矩
rb.AddRelativeTorque()

[*]角速度

[*]单位为弧度
2*PI为一圈
rb.angularVelocity rb.maxAngularVelocity默认为7弧度

[*]加速与减速

[*]四种施加扭矩的方式
力,加速度,冲量,角速度


[*]能量衰减

[*]Rigibody组件
drag线速度衰减系数 Angular drag角速度衰减系数

(练习)小车的转向
十一 物理更新


[*]物理更新

[*]文档:事件函数执行顺序
FixedUpdate()

[*]游戏时间
Time.time经过折算的时间 Time.realtimeSinceStartup真实系统时间


[*]单线程
无并发

[*]帧调度
Update调度时间受系统影响 FixedUpdate相对固定

[*]Input Flag
不应在FixedUpdate中使用Input获取事件输入

十二 物理碰撞


[*]物理碰撞
碰撞体之间碰撞

[*]碰撞条件
Mesh Colider必须设置Convex才能实现碰撞

[*]CCD连续检测
解决速度过快的穿透问题
[*]Collision Detection
Discrete离散的 Continous连续的 Continous Dynamic基于扫掠的CCD Continuous Speculative推断性CCD


[*]碰撞事件函数
Collision类
[*]事件函数
OnColiisionEnter OncollisionStay OncoliisionExit

组合碰撞体
[*]子物体碰撞体
父物体添加刚体,接收碰撞事件 子物体添加碰撞体

[*]刚体的质心
重心 rb.centerOfMass

页: [1]
查看完整版本: Unity3D进阶教程(三)刚体运动,扭矩,物理更新,碰撞