惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Troy Hunt's Blog
F
Fortinet All Blogs
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
The Register - Security
The Register - Security
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
V
Vulnerabilities – Threatpost
S
Securelist
S
SegmentFault 最新的问题
T
Threat Research - Cisco Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Privacy International News Feed
S
Schneier on Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
美团技术团队
Cyberwarzone
Cyberwarzone
C
Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google Online Security Blog
Google Online Security Blog
M
MIT News - Artificial intelligence
U
Unit 42
V
V2EX
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
B
Blog
博客园 - 叶小钗
Attack and Defense Labs
Attack and Defense Labs
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - Franky
Engineering at Meta
Engineering at Meta
Schneier on Security
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Blog of Author Tim Ferriss
IT之家
IT之家
W
WeLiveSecurity
Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
Martin Fowler
Martin Fowler
SecWiki News
SecWiki News

博客园 - playman0211

UE蓝图---实现场景物体Transform状态重置效果 【转】读取系统时间和时间戳【UE4】【C++】 Unity --- 关节组件 C# CRC16算法实现【转】 IhyerDB modBus采集器配置. 简单理解C#中的抽象工厂模式是什么概念! C# 进制转换(二进制、十六进制、十进制互转) 软件加密锁编程技巧【转】 C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集 Gjhf c#格式化数字(转) oracle数据库删除数据Delete语句和Truncate语句的对比 用Instant client批量安装Oracle客户端-安装配置 C#使用instantclient连接 Oracle 10g (转) InstantClient安装使用 (转) oracle case when的使用方法 Oracle case when 用法(转) C# 读写ini文件 【转】 SQL Server CONVERT() 函数
关于Unity中关节的使用(一)
playman0211 · 2017-09-30 · via 博客园 - playman0211

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(0, 0, 100));//给一个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(0, 0, 100));//给它一个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(200, 0, 0));//给球体一个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上,杂重力的作用下两个物体像单摆一样运动。

来自:http://www.cnblogs.com/HangZhe/p/7214731.html