一、简介

Unity提供了下面的关节组件:铰链关节(Hinge Joint)、固定关节(Fixed Joint)、弹簧关节(Spring Joint)、角色关节(Character Joint)、可配置关节(Configuration Joint)。

本节简单介绍这些组件的含义。

二、铰链关节(Hinge Joint)

铰链关节(Hinge Joint)由两个刚体组成,该关节会对刚体进行约束,使它们就好像被连接在一个铰链上那样运动。它非常适用于对门的模拟,也适用于对模型链及钟摆等物体的模拟。

1、添加铰链关节组件

依次打开菜单栏中的【Component】->【Physics】->【Hinge Jont】,即可为所选择的游戏对象添加铰链关节组件。

2、属性

·Connected Body:连接刚体。为关节指定要连接的刚体,若不指定则该关节将与世界坐标系相连接。

·Anchor:锚点。刚体可围绕锚点进行摆动,这里可以设置锚点的位置,该值应用于局部坐标系。

·Axis:轴。定义刚体摆动的方向,该值应用于局部坐标系。

·Use Spring:使用弹簧。勾选该项,则弹簧会使刚体和与其链接的主体形成—个特定的角度。

Spring:弹簧。当Use Spring参数开启时此属性有效。

Spring:弹簧力。该项用于设置推动对象使其移动到相应位置的作用力。

· Damper:阻尼。设置对象的阻尼值,数值越大则对象移动得越慢。

Target Position:目标角度。该顶用于设置弹簧的目标角度,弹簧会拉向此角度,以度为测量单位。

·UseMotor:使用马达。勾选该项,马达会使对象发生旋转。

·Motor:马达。当Use Motor参数开启时,此属性会被用到。

Target Velocity:目标速度。设置对象预期将要达到的速度值。

Force:作用力。设置为了达到目标速度而施加的作用力。

Free Spin:自由转动。勾选该项,则马达永远不会停止,旋转只会越转越快。

·Use Limits:使用限制。勾选该顶,则铰链的角度将被限定在最大值相最小值之间。

·Limits:限制。当Use Limits开启时,此属性将会被用到。

Min:最小值。设置铰链能达到的最小角度。

Max:最大值。设置铰链能达到的最大角度。

Min Bounce:最小反弹。设置当对象触到最小限制时的反弹值。

Max Bounce:最大反弹。该顼用于设置当对象触到最大限制时的反弹值。

·Break Force:断开力。设置铰链关节断开的作用力。

·BreakTorque:断开转矩。没置断开铰链节点所需的转矩。

单独的铰链关节要应用到一个游戏对象上,铰链或绕着Anchor属性所指定的点来旋转,按照Axis属性指定的轴来移动。不用给关节的Connected Body属性添加对象,只有当希望关节的Transform属性依赖于附加对象的Transform属性时才为关节的Connected Body属性来添加对象。多个铰链关节也可以串联起来形成一条链条,可以给链条的每—个环添加关节,并向Connected Body那样添加到下一环上。

技巧:不需要指定Connected Body属性来运转关节。可调整Spring、Motor、Limits等属性来惊喜调整关节的行为状态。

三、固定关节(Fixed Joint)

固定关节组件用于约束一个游戏对象对另一个游戏对象的运动。类似于对象的父子关系,但它是通过物理系统来实现而不像父子关系那样是通过Transform属性来进行约束。

固定关节适用于以下的情形:当希望将对象较容易与另—个对象分开时,或者连接两个没有父子关系的对象使其一起运动,使用固定关节的对象自身需要有—个刚体组件。

1、添加固定关节组件

依次打开菜单栏中的【Component】->【Physics】->【Fixed Joint】选项,就可以为所选择的游戏对象添加固定关节组件。

2、属性

·Connected Body:连接刚体。指定关节要连接的刚体,若不指定则该关节将与世界坐标系相连接。

·Break Force:断开力。设置关节断开的作用力。

·Break Torque:断开转矩。设置断开关节所需的转矩。

有时游戏中会存在这样的情景:当希望要某些游戏对象暂时或永久性的地粘在一起,这时就很适合使用固定关节组件。该组件不需要通过脚本来更改层级结构就可以实现想要的效果,只需要为那些要使用固定关节的游戏对象添加刚体组件即可。

可通过Break Force和BreakTorque属性来没置关节的强度极限,如果这些参数不是无穷大而是—个数值,那么当施加到对象身上的力或转矩大于此极限值时,固定关节将被销毁,其对对象的约束也就随即失效。

四、弹簧关节(Spring Joint)

弹簧关节组件可将两个刚体连接在—起,使其像连接着弹簧那样运动。

依次打开菜单栏中的Component->Physics->Spring Joint选顶,即可为所选择的对象添加弹簧关节组件。

其属性和前面介绍的属性相似,此处就不重复了。

弹簧关节允许一个带有刚体的游戏对象被拉向—个指定的目标位置,这个目标可以是另一个刚体对象或者世界。当游戏对象离目标位置越来越远时,弹簧关节会对其施加一个作用力使其回到目标的原点位置,类似橡皮筋或者弹弓的效果。

当弹簧关节被创建后(预览游戏模式下),其目标位置是由从锚点到连接的刚体(或世界)的相对位置所决定的,这使得在编辑器中将弹簧关节设定给角色或其他游戏对象非常容易,但是如果通过脚本来生成一个实时的推拉弹簧的行为就相对比较困难。

如果想通过弹簧关节来控制游戏对象的位置,通常是建立一个带有刚体的空对象,然后将该空对象设置到Connected Regidbody属性上,这样就可以通过脚本来控制空对象的移动,这样一来,弹簧也会随着空对象的位移而移移动了。

五、角色关节(Character Joint)

角色关节主要用于表现布娃娃效果,它是扩展的球关节,可用于限制每一个轴向上的关节。

依次打开菜单栏中的Component->Physics->Character Jont选项,就可以为所选择的游戏对象添加角色关节组件。

角色关节的属性和前面介绍的属性相似,此处仅介绍一些不重复的选项。

·Swing Axis:摆动轴。设置角色关节的摆动轴,以绿色的圆锥gizmo表示。

·Low Twist Limit:扭曲下限。设置角色关节扭曲的下限。

Limit:设置角色关节扭曲的下限值。

Bounciness:设置角色关节扭曲下限的反弹值。

Spring:设置角色关节扭曲下限的弹簧强度。

Damper:设置角色关节扭曲下限的阻尼值。

·High Twist Limit:扭曲上限。设置角色关节扭曲的上限。

·Break Force:断开力。控制角色关节断开所需的作用力。

·Break Torque:断开转矩。设置角色关节断开所需的转矩。

六、可配置关节(Configuration Joint)

可配置关节组件支持用户自定义关节,它开放了Physics引擎中所有与关节相关的属性,因此可像真他类型的关节那样来创造各种行为。

可配置关节有两类主要的功能:移动/旋转限制和移动/旋转加速度。

依次打开菜单栏中的Component->Physics-> Configuration Joint项,即可为所选择的对象添加可配置关节组件。

1、移动旋转限制

可以为每个旋转轴和运动类型指定约束。针对X轴、Y轴以及Z轴运动可定义沿不同轴的移动,而针对X轴、Y轴、Z轴旋转可定义沿不同轴的旋转,这些属性可以被没定为Free(不受约束)、Limited(受自定义的限制)及Locked(锁定状态无法运动)。

1)移动限制:如果游戏对象某个轴的Motion属性设定为Limied,则可通过修改Limited属性值来设定该轴的运动约束值。对于平移运动,Linear Limited属性将没定该对象能够远离原点的最大距离,通过该属性下的Limit数值可以对Motion属性值为Limited的任何移动进行约束。

2)旋转限制:旋转限制与移动限制相类似,只是Angular Motion属性是与Angular Limit相关。Linear Limit属性设定了对3个轴在移动上的约束,而Angular Limit属性则设定了对于3个轴在旋转上的约束。

2、移动旋转加速度

使对象到达指定的位置或方向运动,或到达指定的速度或角速度。此系统的工作方式是:首先定义一个想要达到的目标,然后通过驱动力来提供加速度以便使其到达此目标,每一个驱动都有一个模式,通过此模式可定义该对象当前的目标。

1)移动加速度X、Y、Z轴驱动属性使游戏对象沿着特定的轴来移动,每个驱动模式指定的对象是朝着目标位置还是目标速度抑或是两者兼而有之的运动方式。比如当X轴驱动设置为Position时,对象会朝着X轴的目标位置去移动。

当驱动模式为Position时,它的位置弹簧值将决定其如何朝着目标位置运动;同样,当驱动模式为Velocity时,它的最大作用力将决定该对象如何被加速至目标速度。

2)旋转加速度:旋转加速度属性为X轴角、YZ轴角驱动及插值驱动,其功能与移动驱动基本相同,只是插值驱动与角驱动在功能上表现不同。可以在旋转驱动模式中选择是采用角驱动还是插值驱动,但这两种驱动不能同时被使用。

Unity --- 关节组件的更多相关文章

  1. 使用Unity NGUI-InputField组件输入时发现显示为白色就是看不到字体

    今天在接入android支付宝 SDK时,打包运行时,发现使用Unity NGUI-InputField组件输入时发现显示为白色就是看不到字体,查找一下发现是与android交互存在的问题, 只需在A ...

  2. Unity 关节

    引言 关节组件一共分为5大类,它们分别是链条关节.固定关节.弹簧关节.角色关节和可配置关节. 链条关节(Hinge Joint):将两个物体以链条的形式绑在一起,当力量过大超过链条的固定力矩时,两个物 ...

  3. Unity 摄像机组件

    今天看一下unity3d里面的摄像机是怎么调用和操作的. 打开unity3d新建一个工程.在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中.点击Ma ...

  4. unity碰撞组件、刚体组件

    游戏导入标准资源包“Character Controllers”后可以为游戏对象添加 character(角色控制器)组件: 添加角色控制器组建以后可以控制游戏对象移动: 角色控制器组件因为与碰撞组件 ...

  5. unity音频组件

    unity 支持的四种音频格式: .AIFF  适用于较短的音乐文件可用作游戏打斗音效 .WAV  适用于较短的音乐文件可用作游戏打斗音效 .MP3  适用于较长的音乐文件可用作游戏背景音乐 .OGG ...

  6. Unity 代码组件获取和使用、Resources加载、OnGUI、Time、Mathf、PlayerPref

    1.     游戏物体组件获取.添加组件(重要) 作业分析: 子弹生成:坦克生成----->坦克控制类里生成子弹 子弹飞行:子弹自己飞,不能通过坦克控制类进行管理: 获取代码组件,设置子弹速度: ...

  7. Unity 各个组件参数总结

    今天在蛮牛教育上学习了NGUI的课程下面给大家总结了一些小知识点希望对大家有帮助UICamera-可以添加到任何相机,包含事件系统.UICamera是每个UI的重要组成部分.它负责发送Camera中所 ...

  8. 关于Unity的组件和作用

    一.Transform组件 整个场景由节点树组成. 节点+Transform组件,每个Transform有自己的孩子Transform,由Transform组成Transform树,而每个Transf ...

  9. Unity* 实体组件系统 (ECS)、C# 作业系统和突发编译器入门

    Unity* 中的全新 C# 作业系统和实体组件系统不仅可以让您轻松利用以前未使用的 CPU 资源,还可以帮助您更高效地运行所有游戏代码.然后,您可以使用这些额外的 CPU 资源来添加更多场景动态和沉 ...

随机推荐

  1. WeakHashMap源码分析

    WeakHashMap是一种弱引用map,内部的key会存储为弱引用, 当jvm gc的时候,如果这些key没有强引用存在的话,会被gc回收掉, 下一次当我们操作map的时候会把对应的Entry整个删 ...

  2. mybatis的入门(一)

    一.mybatis的介绍 mybatis是Apache的一个开源项目ibatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为M ...

  3. BZOJ - 1935 / 1176 cdq分治 三维偏序

    题意:给定n*m的网格,且给出n个(x,y)表示该网格已被占有,q次询问(x1,y1)到(x2,y2)的网格中有多少个被占有,n,m范围1e7,q范围5e5 cdq按x轴排序,树状数组维护y轴 #in ...

  4. Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  5. 高版本sonar安装遇到的坑-sonar 6.7.5

    最近安装了6.7.5版本的sonar,发现里面的坑还是很多,下面列举下遇到的坑 sonar插件地址:https://docs.sonarqube.org/display/PLUG/Plugin+Lib ...

  6. python 使用缓存加快运算

    from functools import lru_cache import time from functools import wraps def clock(func): @wraps(func ...

  7. SpringBoot读取静态资源文件

    ClassPathResource resource = new ClassPathResource(publicKeyCer); File file = null; try { file = res ...

  8. line-height详解

    line-height详解 要说line-height就必须要知道这几个概念了: 顶线.中线.基线.底线. 这也就是在vertical-align中可能用到的top,middle,baseline和b ...

  9. linux下非root用户获得/dev/ttyUSB0的读写权限

    首先查看/dev/ttyUSB0的权限属性,在终端输入: ll /dev/ttyUSB0 teashaw@xiaopeiqing.com:~$ ll /dev/ttyUSB0 crw-rw—- 1 r ...

  10. Fiddler使用二(Fiddler抓取HTTP请求)

    参考:http://blog.csdn.net/ohmygirl/article/details/17849983 Fiddler使用一中已经介绍了Fiddler的原理和软件界面.本文主要针对Fidd ...