Unity --- 关节组件

一、简介

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轴角驱动及插值驱动,其功能与移动驱动基本相同,只是插值驱动与角驱动在功能上表现不同。可以在旋转驱动模式中选择是采用角驱动还是插值驱动,但这两种驱动不能同时被使用。

时间: 2024-11-08 18:06:18

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

Unity 各个组件参数总结

今天在蛮牛教育上学习了NGUI的课程下面给大家总结了一些小知识点希望对大家有帮助UICamera-可以添加到任何相机,包含事件系统.UICamera是每个UI的重要组成部分.它负责发送Camera中所有NGUI的活动.如果场景中仅有一个Camera,要确保它附有 UICamera脚本.如果有多个相机,确保至少用来渲染UI的相机有UICamera脚本.当将这个脚本放在主相机上时,在游戏场景中的所有都将有 OnClick, OnHover, OnDrag等事件. 参数Tooltip Delay:设定

unity碰撞组件、刚体组件

游戏导入标准资源包“Character Controllers”后可以为游戏对象添加 character(角色控制器)组件: 添加角色控制器组建以后可以控制游戏对象移动: 角色控制器组件因为与碰撞组件相互冲突,所以添加角色控制器组建后Collider组件就会消失. 默认在Unity中创建的模型是不具备接收物理引擎的,除非给模型添加刚体组件或角色控制器组件. 看下面代码: 1 using UnityEngine; 2 using System.Collections; 3 4 public cla

Unity 摄像机组件

今天看一下unity3d里面的摄像机是怎么调用和操作的. 打开unity3d新建一个工程.在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中.点击Main Camera在Inspector中出现Main Camera的组件信息.如图 在camera组件中可以对是相机的一些属性进行调节. Clera Flags:清除标记.下拉菜单一共有4个选项. Skybox:天空盒,背景显示天空盒.如果该相机没有添加天空和则显示背景颜色.Solid Color:

unity音频组件

unity 支持的四种音频格式: .AIFF  适用于较短的音乐文件可用作游戏打斗音效 .WAV  适用于较短的音乐文件可用作游戏打斗音效 .MP3  适用于较长的音乐文件可用作游戏背景音乐 .OGG  适用于较长的音乐文件可用作游戏背景音乐 audiosource 组件 德兴馆参数的含义: AudioClip :声音片段,还可以在代码中去动态的截取音乐文件. Mute : 是否静音 Bypass Effects: 是否打开音频特效 Play On Awake: 开机自动播放 Loop:循环播放

Unity自定义组件之序列帧播放组件

我们知道在unity中播放序列帧动画有两种方式,第一种是利用Unity自带的animation组件来播放,我们只需要在工程目录中全选选中所有我们需要播放的图片,将其拖动到Hiercarchy上,Unity就会帮我们自动创建一个animation片段,我们就可以用animation组件来控制我们的动画,不过这种方式创建的图片Sprite Renderer类型的.第二种方式就是创建一个Image组件,利用代码创建一个sprite,写一段代码利用Update函数来逐帧替换Image的sprite来实现

unity button组件

interactable:交互,取消勾选则点击失效 transition:过渡 1.none 2.color tint 色调target graphhic目标图形normal color正常的颜色highlighted color突出的颜色,鼠标移动到button上面pressed color按下的颜色,按下鼠标显示这个颜色disabled color禁用颜色color multiplier颜色倍增,用来加深颜色fade duration淡出持续时间,颜色变换的时间 3.sprite swap

【Unity 3D】学习笔记四十一:关节

关节 关节组件可以添加至多个游戏对象中,而添加关节的游戏对象将通过关节连接在一起并且感觉连带的物理效果.需要注意的是:关节必须依赖于刚体组件. 关节介绍 关节一共分为5大类:链条关节,固定关节,弹簧关节,角色关节和可配置关节. 链条关节(hinge joint):将两个物体以链条的形式绑在一起,当力量大于链条的固定力矩时,两个物体就会产生相互的拉力. 固定关节(fixed joint):将两个物体永远以相对的位置固定在一起,即使发生物理改变,它们之间的相对位置也将不变. 弹簧关节(spring

C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想

如果你接触过<设计模式>.软件架构的编程思想,就会知道优秀的设计准则:"组合优于继承的". 这句话很简短,但开始学习OOP的时候,真切的是--不太好理解(以我个人当初学习为例). OOP的继承思想 在设计主角(Player)的时候,为了能够复用A.B.C的功能,我开始把A.B.C按照继承来写,多了一些Virutal\Override\Protected等修饰符,功能没有任何问题,就是有些别扭.如Start.Update方法,只能在A中采用模板方法处理,万一B.C.Playe

如何理解Unity组件化开发模式

Unity的开发模式核心:节点和组件,组件可以加载到任何节点上,每个组件都有 gameobject 属性,可以通过这个属性获取到该节点,即游戏物体. 也就是说游戏物体由节点和组件构成,每个组件表示物体的一种特性(能力). 可以按照三条线路去理解Unity的组件化开发模式: 1.场景树. 场景树由节点构成,使用了整体与局部的思想,如父亲节点移动,孩子节点会跟随移动,不用每个都去移动. Transform组件是每个节点必备的节点,并且记录了父亲节点与孩子节点之间的关系. 2.渲染关系 Mesh组件: