Unity Hinge Joint铰链组件
铰链组件本文提供全流程,中文翻译。助力快速学习 Unity Hinge Joint 铰链关节的使用为初学者节省宝贵的时间,避免采坑!使用铰链实现开关门Unity 铰链Hinge JointHinge Joint 实现开关门Connected Body连接的对象,如果没有设置,则连接到世界Anchor自身摆动的轴的位置。该位置在本地坐标系中定义Axis绕着某个轴旋转。Axis绕着某个轴旋转。Auto
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
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
更多推荐
所有评论(0)