Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 |
助力快速学习 Unity Hinge Joint 铰链关节的使用 为初学者节省宝贵的时间,避免采坑! |
Chinar 教程效果:
1
introduce —— 介绍
Hinge Joint
铰链关节,使两个刚体连接起来,让他们像铰链一样运动,通常门,钟摆等事物用到铰链关节
2
Property —— 属性
下面用表格介绍一下各个属性的作用:
属性 | 功能 |
---|---|
Connected Body | 连接的对象,如果没有设置,则连接到世界 |
Anchor | 自身摆动的轴的位置。该位置在本地坐标系中定义 |
Axis | 绕着某个轴旋转。 |
Auto Configure Connected Anchor | 如果启用此选项,则将自动计算 Connected Anchor 位置以匹配 anchor 属性的全局位置。这是默认的,如果禁用此选项,则可以手动配置连接锚点的位置 |
Connected Anchor | 手动配置连接对象的锚位置 |
Use Spring | 与连接体相比,弹簧使刚体达到特定角度 |
Spring | 使对象移动到该位置的力 |
Damper | 阻力,该值越高,对象减速越快 |
Target Position | 弹簧的目标角度。弹簧朝向以度为单位测量的角度拉动 |
Use Motor | 使用电机使物体旋转 |
Target Velocity | 对象试图达到的目标速度 |
Force | 为了达到速度而施加的力 |
Free Spin | 勾选后,电机永远不会用于制动旋转,只能加速。 |
Use Limits | 勾选后,铰链的角度将限制在最小值和最大值之内 |
Min | 旋转的最小角度。 |
Max | 旋转可以达到的最大角度。 |
Bounciness | 当物体达到最小或最大停止限制时,物体会反弹多少 |
Contact Distance | 在距离极限触点的接触距离内将持续存在以避免抖动 |
Break Force | 破坏此关节需要的力。 |
Break Torque | 破坏此关节需要的扭矩。 |
Enable Collision | 选中时,这将启用与关节连接的物体的碰撞 |
Enable Preprocessing | 禁用预处理有助于稳定不可能完成的配置。 |
Mass Scale | 质量缩放 |
Connected Mass Scale | 连接体的质量缩放 |
3
Example —— 例子
我们先铰链组件模仿一下门的打开,门绕着门框旋转的效果
首先,我们用2个Cube搭一个简单的门,黑色的是门框,白色的是门板
然后我们在门板上添加铰链组件,并设置属性
设置好Y轴后只需要将锚点移动到旋转中心就可以了。
之后运行Unity,在Scene场景中给门板一个力,使其旋转,最简单的方法就是碰撞
简单的开门效果就实现了。
下面用代码实现一下开门关门效果:
首先加一个控制开门关门的按钮,名字叫OpenBtn
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class OpenTheDoor : MonoBehaviour
{
private bool isOpen = false;
private JointMotor joint;//因为不能直接更改游戏对象上的motor属性,所以需要定义一个JointMotor
private Button button;
private Text text;
void Start()
{
joint.force = 10;//在开始的时候就定义力的大小,在开关门方法中只需要控制速度就可以了
button = GameObject.Find("OpenBtn").GetComponent<Button>();
text = button.transform.Find("Text").GetComponent<Text>();
button.onClick.AddListener(OpenDoor);
}
/// <summary>
/// 开关门的方法
/// </summary>
void OpenDoor()
{
if (!isOpen)
{
joint.targetVelocity = -30;
text.text = "关门";
}
else
{
joint.targetVelocity = 30;
text.text = "开门";
}
gameObject.GetComponent<HingeJoint>().motor = joint;
isOpen = !isOpen;
}
}
然后在组件上设置一下限制:
运行一下看看效果
以上就是Hinge Joint
铰链组件的简单使用
Chinar 提供一站式《零》基础教程 使有限时间 具备无限可能! |
Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址