rigibody组件
来源:互联网 发布:网上商城源码 java 编辑:程序博客网 时间:2024/06/16 09:04
Character Controller的一些特性:
本身不受physics影响,需要接受外力作用时,使用onCharacterColliderHit().
Skin width:最好设置为radius的10%,防止角色经常卡住。
step offset:对于2meter高的Character最好设为0.1到0.4
min move distance设为0即可。
Rigidbody的属性设置:
Is Kinematic:打开后物体不受物理引擎影响,只受transform的控制。比如制作一个上升的平台,本身是rigidbody,且不受物理引擎影响,打开Is Kinematic.
Interpolate:使运动更光滑。
Freeze Rotation:使旋转不受碰撞或由script里定义施加的外力影响。只受tranform控制。
对rigidbody使用力的script方法:AddForce(),AddTorque().当使用physics时不要直接修改transform.
collision detection:高速运动的碰撞体应设为continuous,防止出现上一帧在其他碰撞物体的这边,下一帧已经穿过碰撞物体到达另一边的情形。默认为discrete.只有box,sphere和capsule的collider才能设置为continuous.
对于rigidbody,size是个比mass更重要的属性,所以在建模的时候强烈建议总是参考实际标准大小(unity中单位长度是米)。实时instantiate一个物体并修改它的大小,会影响其物理属性,因而会降低游戏性能。
两个rigidbody自由下落的速度不受mass影响,而是用drag(空气阻力)这个参数来控制。drag值越大,看起来感觉物体重量越轻(典型的0.001-金属块,10-羽毛)。
对rigidbody使用constant force组件来设置一个constant force,这个力可以是force或torque。
对物体施加constant force时,设置一个drag值可让物体加速到一个特定的最大速度以后不再加速。drag值越大这个速度越小。
某带有rigidbody的collider碰撞时会发送三个消息给该collider的对象,分别是Collider.OnCollisionEnter,Collider.OnCollisionExit和Collider.OnCollisionStay,这些事件可以在script里选择利用NVIDIA PhysX engine进行特别处理。
打开collider的Is trigger选项,碰撞就不受到物理引擎影响,而是通过发送三个消息变成某个事件的trigger。(同样的,发生碰撞的两个collider中至少有一个必须是rigidbody)这三个消息函数分别是:Collider.OnTriggerEnter,Collider.OnTriggerExit和Collider.OnTriggerStay.引发的事件可以是切换场景,开门,播放教程等等,自由发挥你的想象力。
总结下来:三种collider:
1.static collider: 带有collider却没有rigidbody的对象,最好用于静止物体如环境地理。
2.rigidbody collider:带有rigidbody的collider对象,能够根据物理引擎很好的响应外力和碰撞作用。
3.kinematic rigidbody collider:带有rigidbody的collider对象,开启Is kinematic之后,等效于可以频繁使用insform来移动(而非rigidbody collider利用外力或碰撞的物理效应)的static collider,用于需要rigidbody但不希望响应物理效果的对象。另外就是可以给其设置Is trigger,作为某些事件的触发器,但Is trigger的设置对象必须是rigidbody,但你又不希望其受物理定律约束的情形。
注:kinematic还常用来创造ragdoll.由于kinematic可以方便的开关,通常情况下开启kinematic方便角色移动等,但遇到碰撞、爆炸冲击等情况,可以在脚本里添加代码使其关闭kinematic变为普通的rigidbody接受物理作用。
- rigibody组件
- rigibody over 翻译
- Unity3D中的刚体(Rigibody)使用
- unity之CharacterController与Rigibody
- Unity API(六):Rigibody
- 刚体Rigibody && 碰撞器Collider
- unity中的rigibody 和 collider 讲解
- unity3d 移动平台性能优化专题(12):面板的colider问题和rigibody设置
- Mathf.lerp()和Time.deltaTime的使用问题,rigibody去掉力的作用
- 组件
- 组件
- 组件
- 组件
- 组件
- 组件
- 组件
- 组件
- 组件
- ThinkPHP5的安装使用/tp5快速入门
- adb找不到sd卡的存储路径
- PHP开发APP接口
- CodeIgniter 视图篇
- PAT甲 1102. Invert a Binary Tree (25)
- rigibody组件
- A+B
- mac paralles内 windows虚机 连接 linux虚机
- HDU2544 最短路
- [leetcode]636. Exclusive Time of Functions
- CNTK API文档翻译(11)——使用LSTM预测时间序列数据(物联网数据)
- Effective C++笔记(8)—继承与面向对象设计
- Nginx服务器对session的处理策略
- 不要以多态的方式处理数组