关于Unity中关节的使用(一)
1: 刚体的形状大小在物理世界里面是不变的,可是很多时候,我们需要多个刚体来配合使用;
2: 关节: 连接刚体与刚体的对应的物理模拟;
3: 关节类型: 铰链关节,弹簧关节, 固定关节, 角色关节,可配置关节
铰链关节
1: 将两个刚体束缚在一起,在两者之间产生铰链效果;
2: 铰链关节属性
connect Body:目标连接的刚体;
Anchor 本体锚点,连接目标旋转时围绕的中心点;
Connect Anchor 连接目标的锚点,本体旋转时围绕的中心点;自动计算出来的。
Axis 锚点和目标锚点的方向,指定了本体和连接目标的旋转方向;绕哪个轴旋转
Auto Configure Connected Anchor: 勾选时,仅给出锚点的坐标,系统将自动计算出目标锚点坐标;
Using Spring: 是否使用弹簧;
Sprint 弹力;
Damper: 阻尼,物体移动受到阻碍的大小,越大物体越慢;
Target Postion: 目标位置,弹簧旋转的目标角度;
Use Moto 使用电机,规定关节肿是否使用电机;
TargetVelocity: 目标速率,对象试图达到的速度,会以此速度与目标速度进行加速和减速;
Force 此属性是达到目标速率的力;
Free Spine 规定了收控制对象的旋转是否会破坏,若启用,马达将永远不会破坏旋转,只会加速;
Use Limits规定了关节在旋转的时候是否受限;
Min 规定了刚体旋转的达到的最小角度
Max 规定了刚体旋转的达到的最大角度
Min Bonus 规定了刚体旋转的达到的最小弹跳值
Max Bonus 规定了刚体旋转的达到的最小弹跳值
Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;
Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;

创建一个空节点hinge_joint
创建一个圆柱体Cylinicer为它的子节点
创建一个立方体Cube为它的子节点,为了区分,给它一个材质,颜色为红色
给圆柱体Cylinicer和立方体Cube都增加刚体组件Rigidbody,都去掉重力,设置圆柱体Cylinicer的Constraint约束Freeze PositionX,Y,Z,RotationX,Y,Z
给圆柱体Cylinicer增加Hinge Joint组件,里面的Connected Body属性设置为Cube
创建一个脚本test_hinge_joint挂载到Cube上,要给它一个力
using UnityEngine;
using System.Collections; public class test_hinge_joint : MonoBehaviour {
Rigidbody body;
// Use this for initialization
void Start () {
this.body = this.GetComponent<Rigidbody>();
this.body.AddForce(new Vector3(, , ));//给一个z轴方向的力
} // Update is called once per frame
void Update () { }
}
固定关节
1: 将两个刚体束缚在一起, 相对位置保持不变,永远不会变化;
2: 固定关节属性
connect Body:目标连接的刚体;
Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;
Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;
Enable collision 允许碰撞检测;
Enable Preprocess 允许进行预处理;

创建一个空节点fixed_joint
创建一个球体Sphere1为它的子节点,创建一个球体Sphere2为它的子节点,为了区分,给Sphere2一个材质,颜色为红色
给球体Sphere1和Sphere2都增加刚体组件Rigidbody,都去掉重力
给球体Sphere1增加fixed_joint组件,里面的Connected Body属性设置为Sphere2
创建一个脚本test_fix_joint挂载到Sphere2上,要给它一个力
using UnityEngine;
using System.Collections; public class test_fix_joint : MonoBehaviour { Rigidbody body;
// Use this for initialization
void Start() {
this.body = this.GetComponent<Rigidbody>();
this.body.AddForce(new Vector3(, , ));//给它一个z轴方向的力
} // Update is called once per frame
void Update () { }
}
两者开始旋转,但是彼此之间的位置距离都没有变化,你到哪里我到哪里
如果固定两者或其中一个的Freeze RotationX,Y,Z,那么两者会朝着Z轴方向直线运动
弹簧关节
1: 将两个刚体束缚在一起, 相对位置保持不变,永远不会变化;
2: 弹簧关节属性
connect Body:目标连接的刚体;
Anchor 本体锚点,连接目标旋转时围绕的中心点;
Connect Anchor 连接目标的锚点,本体选择时围绕的中心点;
Axis 锚点和目标锚点的方向,指定了本体和连接目标的旋转方向;
Auto Configure Connected Anchor: 勾选时,仅给出锚点的坐标,系统将自动计算出目标锚点坐标;
Sprint 弹力;
Damper: 阻尼,物体移动受到阻碍的大小,越大物体越慢;
Min distance 弹簧两端最小距离
Max distance 弹簧两端最大距离
Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;
Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;
Enable collision 允许碰撞检测;
Enable Preprocess 允许进行预处理;

创建一个空节点spring_joint
创建一个正方体Cube为它的子节点,创建一个球体Sphere为它的子节点,为了区分,给Sphere一个材质,颜色为红色
给正方体Cube和球体Sphere都增加刚体组件Rigidbody,都去掉重力,设置正方体Cube的Constraint约束Freeze PositionX,Y,Z,RotationX,Y,Z,设置球体Sphere的Constraint约束Freeze RotationX,Y,Z。
给球体Cube增加spring_joint组件,里面的Connected Body属性设置为Sphere
创建一个脚本test_spring_joint挂载到Sphere上,要给它一个力
using UnityEngine;
using System.Collections; public class test_spring_joint : MonoBehaviour { Rigidbody body;
// Use this for initialization
void Start()
{
this.body = this.GetComponent<Rigidbody>();
this.body.AddForce(new Vector3(, , ));//给球体一个x轴方向的力,它会像弹簧一样在正方体面前弹来弹去
} // Update is called once per frame
void Update () { }
}
可配置关节

创建一个空节点config_joint
创建一个正方体Cube为它的子节点,创建一个球体Sphere为它的子节点,为了区分,给Sphere一个材质,颜色为红色
给正方体Cube和球体Sphere都增加刚体组件Rigidbody,都保留重力,设置正方体Cube的Constraint约束Freeze PositionX,Y,Z,设置球体Sphere的Constraint约束Freeze PositionX,Y,Z。
给球体Cube增加config_joint组件,修改X Motion, Y Motion, Z Motion 为Locked,里面的Connected Body属性设置为Sphere,
创建一个脚本test_spring_joint挂载到Sphere上,杂重力的作用下两个物体像单摆一样运动。
关于Unity中关节的使用(一)的更多相关文章
- 关于Unity中关节的使用(二)
导入 1.创建工程 2.导入joint_scene.unitypackage 3.运行发现机械爪子摇来摇去,因为line节点下面的子节点之间相互碰撞带动的关系 4.为了消除这种乱摇,我们在右上角添加一 ...
- maya和Unity中的坐标系旋转
maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转. 比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上 ...
- 骨骼动画的原理及在Unity中的使用
制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...
- Unite 2018 | 《崩坏3》:在Unity中实现高品质的卡通渲染(下)
http://forum.china.unity3d.com/thread-32273-1-1.html 今天我们继续分享米哈游技术总监贺甲在Unite Beijing 2018大会上的演讲<在 ...
- 如何在Unity中创造真实的水
你将要创造什么 Unity是由Unity Technologies开发的多平台游戏引擎,用于为控制台,移动设备,计算机甚至网站等多种设备创建视频游戏和应用程序.Unity的核心优势在于其稳健性,可移植 ...
- Unity中使用Attribute
Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...
- 在Unity中使用UGUI修改Mesh绘制几何图形
在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...
- Unity中使用WebView
Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...
- Unity中创建二维码
在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...
随机推荐
- scrollReveal.js页面滚动动态效果
scrollReveal.jshttp://www.dowebok.com/134.html简介 和 WOW.js 一样,scrollReveal.js 也是一款页面滚动显示动画的 JavaScrip ...
- 修改PS1变量
PS1='\[\e[7;46m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ ' from: http://profes ...
- LeetCode 326 Power of Three(3的幂)(递归、Log函数)
翻译 给定一个整型数,写一个函数决定它是否是3的幂(翻译可能不太合适-- 跟进: 你能否够不用不论什么循环或递归来完毕. 原文 Given an integer, write a function t ...
- OpenCV中图像算术操作与逻辑操作
OpenCV中图像算术操作与逻辑操作 在图像处理中有两类最重要的基础操作各自是图像点操作与块操作.简单点说图像点操作就是图像每一个像素点的相关逻辑与几何运算.块操作最常见就是基于卷积算子的各种操作.实 ...
- C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ...
- Android-一只手指滑动View,另一只手指按Home键,重新进入后View状态无法更新的问题
上午测试报了一个bug:说是一只手指拖动虚拟摇杆上的View滑块不松,另一只手指点击Home键将App压后台,重新进入的时候,View滑块卡死了. 刚开始看到这个问题感觉很奇怪,因为正常情况下,手指离 ...
- class() 高级用法 -- lua
class() 高级用法 class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类. 比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码: -- 从 ...
- Shell脚本判断内容为None的方式
1.判断变量 read -p "input a word :" word if [ ! -n "$word" ] ;then echo "you ha ...
- [Windows Azure]The Autoscaling Application Block
The Autoscaling Application Block 5 out of 6 rated this helpful - Rate this topic ...
- 关于CentOS 6下Hadoop占用系统态CPU高的处理办法【转】
一次不经意发现Hadoop的系统态CPU使用率很高,然后百度一下居然是个已知问题. RHEL6优化了内存申请的效率,而且在某些场景下对KVM的性能有明显提升:http://www.Linux-kvm. ...