关于Unity中的刚体和碰撞器的相关用法

1.创建一个3D工程

2.构造项目文件目录

3.保存场景为game_scene到文件夹scenes中

4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObject节点

5.给Plane贴上图片,Sphere贴上材质

6.运行,发现球在空中静止,因为没有添加受力体,也就是刚体组件Rigidbody,添加后运行,球从空中掉到平面上,前提是两者都已经有Collider碰撞器组件,否则只要一方没有Collider就会穿过彼此。

Rigidbody组件属性

1.Mass(质量): [0, 10],默认为1, [0.1, 10]日常生活的感受;

2.Drag(阻力): 物体移动时的阻力
3.AngularDrag(旋转阻力): 旋转时候的衰减;
4.Use Gravity(使用重力): 是否受重力影响;
5.Is Kinematic(是否受牛顿运动学影响): false,正常的物理计算,true运动只会在代码和动画里面受影响,普通的碰撞等都不会改变它的运动状态;
6.Interpotate: (物体运动插值模式) None(最近计算值) Interpolate(内插值) extrapolate(外插值)
7.Collision Detection:Discrete(离散模式 资源少,静止,低速,普通物体) Continuous(连续检测,高速体积小,子弹)。被使用了Continusous检测撞击的对象(被子弹撞击的物体),使用Continus Dynamic模式;
子弹发射碰撞物体,在两个update之间,时间dt范围之内,使用Discrete,子弹会偶然穿过物体,且显示没有发生碰撞,Continuous会判断初始和穿过之后这段距离之间有没有发生碰撞,有就吧子弹还原到撞到物体表面的状态,子弹不会穿过物体。

  Discrete优点运行速度快,性能消耗小,缺点有穿透。

  Continuous优点不会穿透,缺点运行速度慢,性能消耗大。

  Continus Dynamic搭配Continuous,提升仿真效果。

8.Constraints(约束):哪个坐标轴打钩哪个就不会改变,位置和旋转,都可以设置。

刚体变量

1: 角速度(angularVelocity);
2: 线性速度(velocity);
3: 重心(center of mass)
4: 碰撞检测开关(detectCollisions): 默认为true, 关闭检测碰撞 false;
5: intertiaTensor惯性张量 intertiaTensorRotation 惯性张量旋转;
6: 最大角速度(maxAngularVelocity);
7: 最大穿透速度(maxDepenetrationVelocity)
8: position:刚体的世界坐标,与图像的transform.position尽量保持一致。因为是刚体带动图像在运动,所以刚体先动,然后图像才动,所以两者坐标大致相同。
9: rotation: 刚体在世界坐标的旋转,与图像的transform.rotation也是尽量保持一致。
10: useConeFiction是否使用锥形摩擦,一般false; true一般不使用;

创建一个ball的脚本,挂载在Sphere球体下面。ball脚本的内容:

   Rigidbody body;
    // Use this for initialization
    void Start () {
        this.body = this.GetComponent<Rigidbody>();
        Debug.Log(this.body.angularVelocity); // 角速度
        Debug.Log(this.body.velocity); // 线性速度;
        Debug.Log(this.body.centerOfMass); //重心;

        // 关闭了以后就不会有碰撞,这个球就会穿透这个平面
        // this.body.detectCollisions = false; 

        // transform.position 也会有一个坐标大致相等。
        Debug.Log(this.body.position); // 刚体所在的世界坐标
        Debug.Log(this.body.rotation); // 刚体的旋转
        }

刚体常用方法

F *T=冲量变化=MV1-MV0

F:力的大小和方向

T:力的作用时间

当V0为0时,F *T=MV

世界坐标就是Scene视图右上角那个坐标系的坐标,和物体自身的模型坐标系没有关系。

时间: 2024-08-01 18:06:00

关于Unity中的刚体和碰撞器的相关用法的相关文章

Unity中的定时器与延时器

JavaScript中的定时器与延时器,分别是 setInterval.setTimeout,对应的清理函数是:clearInterval.clearTimeout. 而在Unity中,则分别是:Invoke.InvokeRepeating和取消延迟调用  CancelInvoke 延迟调用 void Invoke(string methodName, float time): 重复延迟调用 void InvokeRepeating(string methodName, float time,

王立平--Unity中实现如同Windows资源管理器那样的效果,treeview

效果图如下:

Java中unicode增补字符(辅助平面)相关用法简介

前言 Java从1.5版本开始,加入了unicode辅助平面的支持.本文在JDK1.6上测试. 相关的API主要在Character和String类里.以下这段话是Character的文档说明摘抄. ================================================================================================== Character 类在对象中包装一个基本类型 char 的值.Character 类型的对象包含类型

碰撞器与触发器[Unity]

请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过. 物体发生碰撞的必要条件: 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体. 在unity3d中,能检测碰撞发生的

Unity中的MonoBehaviour类

继承层次: Object->Component->Behaviour->MonoBehaviour MonoBehaviour是所有脚本的基类,使用javascript的话,每个脚本都会自动继承自MonoBehaviour,但使用C#或Boo就必须显式从MonoBehaviour继承. 注意:复选框控件(在编辑中)仅仅会阻止Start.Awake.Update.FixedUpdate和OnGUI函数的执行,如果这些函数中没有一个出现,则复选框就不会显示. 变量: bool useGUIL

碰撞器和触发器

1.什么是碰撞器 碰撞器是一群组件,它包含了很多种类,比如: Box Collider 盒碰撞器.Capsule Collider 胶囊碰撞器.Mesh Collider 网格碰撞器.Sphere Collider 球碰撞器  等等这一类组件,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上.(如下图): 2.什么是触发器 所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框.如下图: 3.区别:       碰撞器     1)碰撞器有碰撞效果     

Unity 碰撞检测中碰撞器与触发器的区别

要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过. 物体发生碰撞的必要条件 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体. 在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器. 碰撞器:一

Rigidbody(刚体) and Collider(碰撞器)

关于Rigidbody,手册上是这么描述的: Control of an object's position through physics simulation. 通过物理模拟控制一个物体的位置. Rigidbody components take control over an object's position - it makes the objects fall down under the influence of gravity, and can calculate how obj

Unity3d碰撞检测中碰撞器与触发器的区别

一,要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动. 二,两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体. 三,在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器. 1>碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上,碰撞检测,但