unity collider rigidbody zz

http://blog.sina.com.cn/s/blog_5b6cb95001017vfr.html

其中最基本的关系:

Collider是最基本的触发物理的条件,例如碰撞检测。基本上,没有Collider物理系统基本没有意义(除了重力)。

Rigidbody是物体的基本物理属性设置,当检测碰撞完之后,就要计算物理效果,而Rigidbody就是提供计算基本参数的玩意。

PhysicMaterial则是附加的基本物理参数,是一个物理材质,UNITY3D有自带默认的物理材质的系数(在Edit/Project Settings/Physic下设置),它参与碰撞的计算例如反弹效果摩擦效果等。

Rigidbody部分:

Rigidbody组件的中文手册:http://game.ceeger.com/Script/Rigidbody/Rigidbody.html

Rigidbody相关具体函数我就不解释了,看官方手册就很明朗,不过有几个还是要讲一下。

1.

如果没有Rigidbody而设置了Collider碰撞的话,那这个物体就是个死死不会动的物体。

假设有Rigidbody去撞它的话,那将会被弹开。不过,假设该脚本控制的是位移而不是物理加力的方式的话,将穿透过去。

两个没有Rigidbody的物体,也是穿透。

两个只有collider而没有rigidbody啥都不会发生,碰撞时连OnTriggerEnter等函数也不会触发。

若碰撞体设置了isTrigger属性,将取代UNITY的物理函数来运算。可以在触发函数里将其屏蔽,再次触发碰撞等效果。

2.

如果物理系统感觉不真实不好,那很可能是缩放的问题。如果你的游戏世界非常大,所以的东西将显示移动非常慢,确保你所有的模型为真实世界大小。例如,一个汽车应该有4米长,一个角色约2米高。物体以相同的加速度下落,不论大或小,重或轻。如果你的游戏世界有较大的缩放,物体仍以相同的加速度下落,但是因为所有的物体都比较大,物体的下落显得就比较慢。(BY U3D圣典的翻译)

3.

当改变刚体参数的时候(例如质量等),应该在FixedUpdate函数中使用它,物理模拟以离散的时间步执行。FixedUpdate函数在每一步之前被立即调用。(修改自U3D圣典的翻译)

4.

isKinematic这个参数指的是是否受物理力的影响,如果勾上则不收AddForce等物理添加力的函数影响了。

5.

collisionDetectionMode 碰撞检测模式

使用这个创建一个刚体的连续碰撞检测,从没有碰撞检测的其他物体传递,用来防止快速移动的物体,为了获得最佳效果,为快速移动的物体设置这个值为CollisionDetectionMode.ContinuousDynamic,以及为其他与之需要碰撞的物体设置这个值,为CollisionDetectionMode.Continuous。这个对物理性能有很大影响,所以只要给它设置为默认值 CollisionDetectionMode.Discrete,假如快速物体的碰撞没有任何问题。连续碰撞检测只支持刚体的球体、胶囊或盒子碰撞器。(BY U3D圣典的翻译)

6.

AddTorque()

添加一个让物体旋转的力——力矩。

参照百度百科:http://baike.baidu.com/view/36869.htm

7.

关于爆炸和聚拢。

AddForceAtPosition()提供一个聚拢的力

AddExplosionForce()可用于炸弹爆炸的效果

ClosestPointOnBounds()可以计算范围内从内到外的伤害,可以计算爆炸范围内不同地点受到的伤害。好东西。

8.

与collider相应的时间触发

OnCollisionEnter/OnCollisionExit/OnCollisionStay

9.

当collider的isTrigger属性为true的时候,其碰撞事件将转移到自定义脚本那。若想两方同时触发,再加个碰撞体来检测。或者直接触发完后将isTrigger设为false,则会再触发rigidbody的碰撞。

Collider部分:

Collider倒没啥好讲的,主要就是一个isTrigger属性。还有选用怎么样的Collider,选用的话看情况而定了。

其中物理材质在下面提一下,这个对于物理效果来说还是挺重要的。

两Collider相碰,至少要有一个物体具有Rigibody刚体才会触发Trigger函数。

当物体进来,OnTriggerEnter当然会触发。出去时,OnTriggerExit也当然触发。那么物体在进来后Destory后会如何?经过测试是:不会调用OnTriggerExit。

不仅是OnTriggerEnter,OnCollisionEnter这个由碰撞引起的函数也很有用,具体以项目所用为标准把,多查查函数手册。

PhysicMaterial部分:

PhysicMaterial的各属性手册:http://game.ceeger.com/Script/PhysicMaterial/PhysicMaterial.html

一般来说只用前三个吧。

1.dynamicFriction

移动时候使用的摩擦力。这个值在0到1之间。

2.staticFriction

当物体在表面静止时使用的摩擦力。通常在0到1之间。

3.bounciness

表面的弹力怎样?0值没有弹力。1值没有能量损失的反弹。

设置好材质直接用就可以了,拖到collider里面。

时间: 2024-12-18 17:53:15

unity collider rigidbody zz的相关文章

Unity -- Collider(碰撞器与触发器)

(2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样) 在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体.2.接收碰撞的物体. 1. 发起碰撞物体有:Rigodbody , CharacterController . 2. 接收碰撞物体由:所有的Collider . 工作的原理为:发生碰撞的物体中必须要有“发起碰撞”的物体.否则,碰撞不响应. 比如:墙用BoxCollider ,所以墙与墙之间无反应. 比如:一个带有Rig

Unity Collider和刚体Collider性能对比

测试方式: 每个对象做大范围正弦移动,创建1000-5000个对象,保证场景分割树的实时更新,并测试帧率 测试脚本: 移动脚本: using UnityEngine; using System.Collections; public class Test1 : MonoBehaviour { public Rigidbody rigidbodyObj; void Update() { switch (Random.Range(0, 3)) { case 0: transform.position

unity之Rigidbody属性

Rigidbody属性 Mass表示物体的质量,数值类型为float,默认值为1.大部分物体的质量属性接近于0.1才符合日常生活感官感受,超过10 ,则失去了仿真效果. Drag表示平移阻力,其数值类型为float,初始值为0,用来表示物体因受阻力而速度衰减的状态. Angular Drag 旋转阻力,其数值类型为float,初始值为0.05,用于模拟物体因旋转而受到的各方面的影响的现象. Use Gravity使用重力,表示物体是否受到重力影响,其数据类型是boolean ,初始值为true,

unity, collider/trigger on children

参考:http://answers.unity3d.com/questions/410711/trigger-in-child-object-calls-ontriggerenter-in-pa.html

[Unity Physics]Physics - Rigidbody、Collider

什么是Collider 碰撞器组件在Unity引擎中触发物理碰撞的最基本的条件. 可以这样说,假如一个游戏中没有物理碰撞系统是不可能的. 什么是Rigidbody 通过物理模拟的控制对象的位置. Rigidbody组件添加到一个对象将其运动的控制下统一的物理引擎.即使没有添加任何代码,Rigidbody对象将由重力向下拉,将反应与传入的对象如果正确的对撞机碰撞组件也存在. Rigidbody也有脚本API,允许您力量应用于对象和物理现实的方式控制它.例如,一辆汽车的行为可以指定在力量方面应用的轮

关于Rigidbody,Collider和CharacterController三者之间的关系和用法的总结

Rigidbody:多用在"物体"上,因为"物体"都是"死"的,他们的运动一般都是靠物理系统.所以对于Rigidbody的移动,不要用Translate(),要用各种"力", 比如:Rigidbody的AddForce()方法,通过"力"来让它移动.另外,Rigidbody可以和NavMeshObstacle合用,因为后者也是用在"物"上的,但是一般不要和NavMeshAgent合用,因

Unity API - C

废话不多说,一针见血,go! 一起来看 API Caching 缓存 Camera 摄像机 CapsuleCollider 胶囊碰撞器 CharacterController 角色控制器 CharacterJoint 角色关节 Cloth 布料 ClothRenderer 布料渲染器 ClothSkinningCoefficient 布料蒙皮系数 Collider 碰撞器 Collision 碰撞 Color 颜色 CombineInstance 合并实例 Caching 缓存 Caching.

Unity常见面试题大全

1.       [C#语言基础]请简述拆箱和装箱. 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程. 1.在堆中开辟内存空间. 2.将值类型的数据复制到堆中. 3.返回堆中新分配对象的地址. 拆箱操作: object类型显示转换为值类型或从接口类型到实现该接口值类型的过程. 1.判断给定类型是否是装箱时的类型. 2.返回已装箱实例中属于原值类型字段的地址. 2.        [.NET(C#)] attribute,property,markup,ta

Unity 3D类结构简介

趁着周末,再来一发.对于Unity3D,我也是刚开始学习,希望能够与大家多多交流.好了,废话不多说,下面继续. 本篇文章使用C#进行举例和说明.关于Unity 3D编辑器中的各种窗口,网上有很多资料了,这里不做介绍,默认大家都知道各个窗口的作用了,并会在Unity 3D编辑器中执行基本的操作. 上一篇讲的是Unity 3D的基础知识,这篇讲一下我刚开始学习编写脚本时遇到的一些困惑,主要是Unity 3D自身继承结构方面的问题. 脚本作为Unity 3D中的一个组件,是经常会使用到的.一个对象可以