《Unity 4 3D开发实战详解》一6.1 刚体

  • 时间:
  • 浏览:1

(6)最大角下行下行速率 (Max Angular Velocity)。

说明

层碰撞矩阵在上边的介绍中会有比较全部的解释,此处不再赘述。

该属性表示当物体没人被指定物理材质的完后 ,该物体的默认材质。其在物理管理器中的位置,如图6-13所示。默认具体情况下是没人指定值的,愿因在Unity中,每个物体的物理材质愿因会有很大的不同,有完后 指定默认材质并都会有过多的用途。

(7)冻结旋转(Freeze Rotation)

(2)默认材质(Default Material)。

(4)刚体的位置(position)

下面的代码可不也能实现另另1个 物体的下行下行速率 骤增,以实现瞬移效果,具体代码如下:

(1)刚体的下行下行速率 (velocity)

2.刚体变量

为了获取愿因更改物体的运动具体情况,Unity还预留了多个变量接口,什么接口使得运动补救变得相当简单。接下来将具体地介绍一下什么变量。

该属性表示的是项目中的反弹阈值,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-14所示,愿因另另1个 碰撞体的相对下行下行速率 低于该值,没人将我过多 反弹。该值也用于减少抖动,什么都不建议设置为很低的值。

(3)旋转刚体(MoveRotation)

前面的内容简单介绍了刚体的属性、变量和常用妙招。接下来你這個要素将讲解一下物理管理器(Physics Manager)的相关内容。

1.刚体属性

为了能够开发者控制物理系统,Unity提供了多个属性接口。开发者可不也能通过更改什么参数来控制物体的物理具体情况。实际开发中,什么参数都被全部地罗列在属性查看器中,开发者很容易就可不也能对其进行更改。接下来对什么属性进行介绍。

**1 function OnCollisionExit(collisionInfo : Collision) { //碰撞现在现在开始

2   print("不再和" + collisionInfo.transform.name+"趋于稳定碰撞。"); //打印**碰撞现在现在开始信息

3 }

2.睡眠的使用(1)睡眠(Sleep)。

Unity 4 3D开发实战详解

(4)休眠下行下行速率 (Sleep Velocity)。

此妙招在碰撞时停止触碰刚体愿因碰撞的完后 调用。该妙招同样会传递另另1个 Collision类,该类中有 了碰撞点和相对下行下行速率 等信息,下面的代码什么都另另1个 简单的例子:

此变量表示当前的物体的旋转否是受到物理定律的约束。通过此变量,可不也能更改x、y、z另另1个 方向中的某个方向的旋转约束,以达到开发者要我达到的旋转效果。

在Unity内建物理引擎中,首没人介绍的是刚体(Rigidbody)的概念。包中有 该类组件的游戏对象,会遵循万有引力定律,在重力的作用下,使物体垂直下落。刚体组件都会影响物体趋于稳定碰撞时的反应,使物体遵循惯性定律,并在许多物体运动冲击作用下产生下行下行速率 愿因形变。

说明

该属性表示的是该物体的旋转否是受到物理定律的约束。其在属性查看器中的位置如图6-7所示。默认具体情况下任意轴的旋转是受物理定律控制的。该属性的值是修改在每个轴上的旋转属性来实现的,实际开发中可不也能灵活地使用。

该属性表示刚体的质量,其数据类型是float,默认值为1。其在属性查看器中的位置如图6-1所示。该属性的大小是有严格要求的,一般来说,大要素物体的质量属性值接近0.1才符合日常生活的感官感受,一旦超过10.0,就会被抛弃仿真所需达到的效果。

下面的脚本实现了将物体放置于原点的功能,具体代码如下:

(1)给刚体施加力(AddForce)

该属性表示的是项目中的层碰撞矩阵,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-21所示。定义层碰撞检测系统的行为。

下面的代码实现了对物体施加竖直向上的力,具体代码如下:

Unity作为另另1个 优秀的游戏开发平台,其出色的管理模式是令人称赞的。在Unity中,不仅可不也能对单个分组进行属性设置,也可不也能对场景全局进行设置。你這個要素讲解Unity中场景的全局物理参数是如可设置的。

(3)冻结旋转(freezeRotation)

下面的脚本实现了设置物体无旋转,具体代码如下:

碰撞触发(OnCollisionEnter)

此妙招在碰撞趋于稳定时被系统自动调用。该妙招会传递另另1个 Collision类,该类中有 了碰撞点和相对下行下行速率 等信息。开发者可不也能利用什么信息对物体进行碰撞补救,下面的代码什么都另另1个 简单的例子:

该妙招只能在另另1个 物体都遵循物理定律的具体情况架构设计 生,即两者的Is kinematic属性都为false。

在第一人称射击游戏中,通过此属性去除物理属性对旋转的控制,可不也能使玩家全部控制视角旋转。

你這個做法不适用于旋转物体,可不也能使用MovePosition代替。

刚体作为物理引擎中的最基本组件,保证了所有物体受到重力的约束。Unity开发平台中,对刚体设置了什么都属性和变量,并对应封装了多个相关妙招,下面进行分别介绍。

该属性表示的是碰撞检测模式。其在属性查看器中的位置如图6-8所示。默认具体情况下,碰撞检测模式是Discrete 。在没人碰撞检测的具体情况下,碰撞物体会穿过对方,产生所谓的“穿透”问题。为补救此类问题的趋于稳定,碰撞检测工作是可不也能做的。

该属性表示的是项目中关节和连接计算过程中的迭代次数。其在物理管理器中的位置如图6-19所示,决定了关节和连接的计算精度。求解迭代次数越高精度越高,之后 次数不足会浪费过多的资源,不能够项目的正常运行,一般来说此值设置为7就可不也能适用于大多数具体情况。

此变量表示物体的下行下行速率 值,在Unity中单位1表示现实生活中的1米。在开发过程中,直接更改此变量的值并都会四种 明智的做法,愿因Unity中物体的运动经过非常冗杂的计算使得物体的运动自然平滑,愿因有外加干预,会迫使物体的运动模拟失真。

该属性表示的是项目中的重力加下行下行速率 ,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-12所示,该属性1个数值分别指定在x、y、z方向上的重力加下行下行速率 ,一般重力是竖直向下的,什么都只能y轴上有另另1个 负值,大小默认为单位是-9.81米/(秒^2)。

该属性是物体的平移阻力,其数据类型是float,初始值为0。Drag属性在属性查看器中的位置如图6-2所示。在现实生活中,物体会受到各方面的影响,下行下行速率 会渐渐衰减,为了模拟你這個效果,Unity设定了平移阻力属性。你這個属性值越高,物体的下行下行速率 衰减越严重。

该属性表示的是项目中的射线检测命中触发器,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-20所示。愿因启用,没人进行射线检测时命中碰撞体会返回另另1个 命中消息,愿因关闭,则不返回命中消息。

注意

(5)刚体的旋转(rotation)

该妙招被调用时,会强制使另另1个 趋于稳定睡眠具体情况刚体被唤醒,其具体的语法如下:

(2)平移阻力(Drag)

AddForce妙招尽量不须用在Update妙招中,愿因那我的妙招在Update中会被不停地调用,与被调用一次不同,你這個是模拟了四种 加下行下行速率 的效果。

(8)碰撞检测模式(Collision Detection)

本节书摘来异步社区《Unity 4 3D开发实战详解》一书中的第6章,第6.1节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可不也能访问云栖社区“异步社区”公众号查看。

(1)碰撞器类的变量如表6-1所示,碰撞器有什么都变量供碰撞补救使用,其中除了碰撞接触点(contacts)变量,许多变量都会只读的,读者请务必注意。

当该值被设定为false的完后 ,物体将不受重力影响,但刚体的许多特性还是趋于稳定的。

此变量表示了物体的旋转具体情况,改变此变量时,引擎会在物理阶段现在现在开始后,将物体旋转到指定的具体情况。

此变量表示当前的物体否是受到重力的约束。在开发过程中,灵活地更改此变量可不也能达到许多特殊的场景要求,比如在外太空环境下的失重具体情况。

此妙招被调用时,会使刚体按照参数旋转到某个方位。此妙招总爱用于FixedUpdate妙招中。具体用法如下列代码所示:

你這個做法不适用于旋转物体。可不也能使用MoveRotation妙招来代替。

关于碰撞模式的选折 ,可选的有不连续模式(Discrete)、连续模式(Continuous)和动态连续模式(ContinuousDynamic),其中动态连续模式适用于高速运动的物体,之后 耗费资源较大。连续模式仅仅可不也能用于球体、胶囊和盒子碰撞者的刚体,然还会严重影响物体的运动表现。什么都大要素的物体采用不连续模式作为碰撞检测模式。



(2)碰撞器相关妙招。

(5)否是遵循运动学(Is Kinematic)

(3)反弹阈值(Bounce Threshold)。

(5)休眠角下行下行速率 (Sleep Angular Velocity)。

可不也能编写代码实现物体的失重具体情况,具体代码如下:

(2)按照第(1)步进行操作完后 ,会在属性查看器中呈现物理管理器编辑器,如图6-11所示。

该妙招被调用时,会强制另另1个 刚体进入睡眠具体情况为宜一帧的时间。一般用在Awake妙招中,设置脚本现在现在开始执行时刚体睡眠。刚体进入睡眠后,物体为宜没人刚体趋于稳定,其具体的语法如下:

(2)否是使用重力(useGravity)

(1)重力(Gravity)。

(7)最小穿透禁区(Min Penetration For Penalty)。

不得不提的是,插值愿因了物理模拟和渲染的不同步,进而产生物体轻微抖动的问题。建议在开发中,对主要角色使用插值,而许多的则禁用此功能,以达到折中效果。

该属性表示的是该物体否是受到重力的影响,其数据类型是boolean,初始值为true。其在属性查看器中的位置如图6-4所示。你這個属性被设为false时可不也能模拟物体在外太空具体情况下的失重具体情况。有完后 也可不也能根据可不也能用于许多特殊的场合。

(2)移动刚体位置(MovePosition)

该变量使用的具体语法代码如下所示:

说明

此妙招在碰撞时两物体接触过程中被调用。该妙招同样会传递另另1个 Collision类,该类中有 了碰撞点和相对下行下行速率 等信息,下面的代码什么都另另1个 简单的例子:

此变量表示了刚体的位置,改变此变量时,引擎会在物理阶段现在现在开始后,将物体放置到指定的位置。





该属性表示的是项目中刚体自动进入休眠时具体情况的下行下行速率 值。其在物理管理器中的位置如图6-15所示。该值是休眠的默认线下行下行速率 ,低于该下行下行速率 的物体愿因进入休眠。愿因没人你這個机制,项目中的所有物体将永远都会计算中,对于资源的回收利用很不利。

(8)求解迭代次数(Solver Iteration Count)。

(10)层碰撞矩阵(Layer Collision Matrix)。

1.碰撞的使用

与碰撞相关的内容包括碰撞器(Collision)类、碰撞检测模式选折 和最小穿透禁区设置,后另另1个 内容愿因在前面的内容中进行了全部的介绍,这里不再赘述。下面重点讲解一下碰撞器类及其相关妙招的使用。

该属性表示的是该物体运动的插值模式。其在属性查看器中的位置如图6-6所示。在默认具体情况下,插值Interpolate是被禁用的,可不也能选折 Interpolate模式,在此模式下物理引擎会在物体的运动帧之间进行插值,使得运动更加自然。

注意

2   rigidbody.rotation = Quaternion.identity;//将物体的旋转具体情况设置为原始态(无旋转)

3 }

说明

(9)射线检测命中触发器(Raycasts Hit Triggers)。

(4)使用重力(Use Gravity)

该属性表示物体的旋转阻力,其数据类型是float,初始值为0.05。其在属性查看器中的位置如图6-3所示。当另另1个 物体进行旋转的完后 ,其旋转的角下行下行速率 也会受各方面影响衰减,为模拟你這個问题,Unity设定了旋转阻力属性。此属性值越高,物体的角下行下行速率 衰减越严重。

(2)强制唤醒(WakeUp)。

该属性表示的是项目中的休眠角下行下行速率 ,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-16所示,愿因角下行下行速率 低于该值,物体将进入休眠具体情况。

2.物理管理器参数

在前面的内容中,讲解了物理管理器的打开操作。接下来介绍的是物理管理器中的相关参数的含义和用法。

(3)旋转阻力(Angular Drag)

1.物理管理器预览

(1)打开Unity开发平台,在菜单栏中选折 “Edit”选项,会弹出编辑列表,如图6-9所示。在编辑列表中,选折 “Project Settings”选项,弹出全局设置列表,如图6-10所示。在全局设置列表中选折 “Physics”,即可进入物理管理器。

(1)质量(Mass)

3.刚体常用妙招

在讲解了刚体的属性与变量后,有必要讲解一下Unity提供的相关妙招。

(6)插值(Interpolate)

另外,我我觉得当该属性被置为true时物体将不受物理定律的约束,然还会物体还是会影响许多的物体,改变许多物体的运动具体情况。在游戏开发中此属性会被总爱用到,想象一下在第一人称射击游戏中,敌人被击杀都会倒地不动,愿因你這個敌人对象Rigidbody的Is Kinematic属性被设置为了true。

该属性表示的是项目中的最小穿透禁区,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-18所示,该属性的具体含义是在碰撞检测器将另另1个 物体分开前,可不也能穿透2个米的距离。较高的值会愿因较多的物体穿透,不过可不也能减少抖动。

该属性表示本游戏对象否是遵循牛顿运动学物理定律,其数据类型是boolean,初始值为false。其在属性查看器中的位置如图6-5所示。愿因该属性被置为true,本物体的运动具体情况将不受外力、碰撞和关节的影响,而只受到动画以及附加在物体上的脚本的影响。

该属性表示的是项目中刚体最大的角下行下行速率 值。其在物理管理器中的位置如图6-17所示,设定最大值可不也能补救角下行下行速率 数值不稳定问题的趋于稳定。在脚本中可不也能用语法Rigidbody.maxAngular Velocity来更改此值。

此妙招被调用时,愿因施加给刚体另另1个 瞬时力,之后 物体在力的作用下,产生另另1个 初下行下行速率 ,接着物体在初下行下行速率 的作用下现在现在开始运动。

此妙招被调用时,会使刚体按照参数移动到某个位置。此妙招总爱用于FixedUpdate妙招中。具体用法如下列代码所示: