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

  • 时间:
  • 浏览:0
  • 来源:uu直播快3平台

(3)旋转刚体(MoveRotation)

此变量表示当前的物体的旋转是算是受到物理定律的约束。通过此变量,还都还还都还可以 更改x、y、z兩个方向中的某个方向的旋转约束,以达到开发者你要达到的旋转效果。

说明

该属性表示的是碰撞检测模式。其在属性查看器中的位置如图6-8所示。默认请况下,碰撞检测模式是Discrete 。在这样碰撞检测的请况下,碰撞物体会穿过对方,产生所谓的“穿透”现象报告 。为处里此类现象报告 的居于,碰撞检测工作是还都还还都还可以做的。

(2)强制唤醒(WakeUp)。

下面的代码还都还还都还可以 实现兩个物体的传输速率骤增,以实现瞬移效果,具体代码如下:

1.碰撞的使用

与碰撞相关的内容包括碰撞器(Collision)类、碰撞检测模式选择和最小穿透禁区设置,后兩个内容肯能在前面的内容中进行了删剪的介绍,这里不再赘述。下面重点讲解一下碰撞器类及其相关辦法 的使用。

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

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

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

(5)休眠角传输速率(Sleep Angular Velocity)。

该辦法 被调用时,会强制使兩个居于睡眠请况刚体被唤醒,其具体的语法如下:

**1 function OnCollisionExit(collisionInfo : Collision) { //碰撞刚开使了了

2   print("不再和" + collisionInfo.transform.name+"居于碰撞。"); //打印**碰撞刚开使了了信息

3 }

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

该属性表示当物体这样被指定物理材质的完后 ,该物体的默认材质。其在物理管理器中的位置,如图6-13所示。默认请况下是这样指定值的,肯能在Unity中,每个物体的物理材质肯能会有很大的不同,有完后 指定默认材质并还都还还都还可以有不要 的用途。

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

这类 做法不适用于旋转物体,还都还还都还可以 使用MovePosition代替。

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

在第一人称射击游戏中,通过此属性去除物理属性对旋转的控制,还都还还都还可以 使玩家删剪控制视角旋转。

当该值被设定为false的完后 ,物体将不受重力影响,但刚体的这类 型态还是居于的。

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

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

2.刚体变量

为了获取肯能更改物体的运动请况,Unity还预留了多个变量接口,哪几种接口使得运动处里变得相当简单。接下来将具体地介绍一下哪几种变量。

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

3.刚体常用辦法

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

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

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

另外,真是当该属性被置为true时物体将不受物理定律的约束,随不会物体还是会影响这类 的物体,改变这类 物体的运动请况。在游戏开发中此属性会被兩个劲用到,想象一下在第一人称射击游戏中,敌人被击杀还都还还都还可以倒地不动,肯能这类 敌人对象Rigidbody的Is Kinematic属性被设置为了true。

(4)休眠传输速率(Sleep Velocity)。

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

(2)平移阻力(Drag)

该辦法 被调用时,会强制兩个刚体进入睡眠请况大慨一帧的时间。一般用在Awake辦法 中,设置脚本刚开使了了执行时刚体睡眠。刚体进入睡眠后,物体大慨这样刚体居于,其具体的语法如下:

在Unity内建物理引擎中,首比较慢介绍的是刚体(Rigidbody)的概念。饱含有该类组件的游戏对象,会遵循万有引力定律,在重力的作用下,使物体垂直下落。刚体组件还都还还都还可以影响物体居于碰撞时的反应,使物体遵循惯性定律,并在这类 物体运动冲击作用下产生传输速率肯能形变。

(3)旋转阻力(Angular Drag)

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

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

AddForce辦法 尽量未必用在Update辦法 中,肯能那我的辦法 在Update中会被不停地调用,与被调用一次不同,这类 是模拟了有三种加传输速率的效果。

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

说明

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

(6)最大角传输速率(Max Angular Velocity)。

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

注意

(1)质量(Mass)

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

此辦法 在碰撞时停止触碰刚体肯能碰撞的完后 调用。该辦法 同样会传递兩个Collision类,该类饱含了碰撞点和相对传输速率等信息,下面的代码可是我 兩个简单的例子:

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

层碰撞矩阵在底下的介绍中会有比较删剪的解释,此处不再赘述。

(4)使用重力(Use Gravity)

(6)插值(Interpolate)



(2)碰撞器相关辦法 。

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

Unity 4 3D开发实战详解

2.物理管理器参数

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

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

碰撞触发(OnCollisionEnter)

此辦法 在碰撞居于时被系统自动调用。该辦法 会传递兩个Collision类,该类饱含了碰撞点和相对传输速率等信息。开发者还都还还都还可以 利用哪几种信息对物体进行碰撞处里,下面的代码可是我 兩个简单的例子:

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

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

这类 做法不适用于旋转物体。还都还还都还可以 使用MoveRotation辦法 来代替。

(3)冻结旋转(freezeRotation)

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

此变量表示当前的物体是算是受到重力的约束。在开发过程中,灵活地更改此变量还都还还都还可以 达到这类 特殊的场景要求,比如在外太空环境下的失重请况。

1.物理管理器预览

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

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

注意

此辦法 在碰撞时两物体接触过程中被调用。该辦法 同样会传递兩个Collision类,该类饱含了碰撞点和相对传输速率等信息,下面的代码可是我 兩个简单的例子:

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

该属性表示的是项目中的反弹阈值,该参数将被应用于所有刚体。其在物理管理器中的位置如图6-14所示,肯能兩个碰撞体的相对传输速率低于该值,这样将我不要 反弹。该值也用于减少抖动,可是我 不建议设置为很低的值。

该属性表示的是项目中刚体自动进入休眠时请况的传输速率值。其在物理管理器中的位置如图6-15所示。该值是休眠的默认线传输速率,低于该传输速率的物体肯能进入休眠。肯能这样这类 机制,项目中的所有物体将永远还都还还都还可以计算中,对于资源的回收利用很不利。

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

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

该辦法 都还还都还可以在兩个物体都遵循物理定律的请况分派生,即两者的Is kinematic属性都为false。

前面的内容简单介绍了刚体的属性、变量和常用辦法 。接下来这类 累积将讲解一下物理管理器(Physics Manager)的相关内容。

此辦法 被调用时,肯能施加给刚体兩个瞬时力,就让 物体在力的作用下,产生兩个初传输速率,接着物体在初传输速率的作用下刚开使了了运动。

(1)刚体的传输速率(velocity)





1.刚体属性

为了有利于开发者控制物理系统,Unity提供了多个属性接口。开发者还都还还都还可以 通过更改哪几种参数来控制物体的物理请况。实际开发中,哪几种参数都被删剪地罗列在属性查看器中,开发者很容易就还都还还都还可以 对其进行更改。接下来对哪几种属性进行介绍。

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

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

说明

说明

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

3 }

(1)碰撞器类的变量如表6-1所示,碰撞器有可是我 变量供碰撞处里使用,其中除了碰撞接触点(contacts)变量,这类 变量还都还还都还可以只读的,读者请务必注意。

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

该属性表示的是项目中刚体最大的角传输速率值。其在物理管理器中的位置如图6-17所示,设定最大值还都还还都还可以 处里角传输速率数值不稳定现象报告 的居于。在脚本中还都还还都还可以 用语法Rigidbody.maxAngular Velocity来更改此值。

Unity作为兩个优秀的游戏开发平台,其出色的管理模式是令人称赞的。在Unity中,不仅还都还还都还可以 对单个分组进行属性设置,也还都还还都还可以 对场景全局进行设置。这类 累积讲解Unity中场景的全局物理参数是如何设置的。

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

还都还还都还可以 编写代码实现物体的失重请况,具体代码如下:

(5)刚体的旋转(rotation)

关于碰撞模式的选择,可选的有不连续模式(Discrete)、连续模式(Continuous)和动态连续模式(ContinuousDynamic),其中动态连续模式适用于高速运动的物体,就让 耗费资源较大。连续模式仅仅还都还还都还可以 用于球体、胶囊和盒子碰撞者的刚体,随不会严重影响物体的运动表现。可是我 大累积的物体采用不连续模式作为碰撞检测模式。

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

(7)冻结旋转(Freeze Rotation)

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

(4)刚体的位置(position)

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

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

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

(1)重力(Gravity)。

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