Unity Hinge Joint铰链组件

Chinar blog www.chinar.xin

Hinge Joint 铰链


本文提供全流程,中文翻译。

Chinar 的初衷是将一种简单的生活方式带给世人

使有限时间 具备无限可能

Chinar —— 心分享、心创新!

助力快速学习 Unity Hinge Joint 铰链关节的使用

为初学者节省宝贵的时间,避免采坑!

Chinar 教程效果:

Unity Hinge Joint铰链组件_第1张图片


文章目录

  • 1
    • introduce —— 介绍
  • 2
    • Property —— 属性
  • 3
    • Example —— 例子


全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

introduce —— 介绍


Hinge Joint 铰链关节,使两个刚体连接起来,让他们像铰链一样运动,通常门,钟摆等事物用到铰链关节

给物体添加Hinge Joint 组件:
举个例子
Unity Hinge Joint铰链组件_第2张图片


2

Property —— 属性


Unity Hinge Joint铰链组件_第3张图片
下面用表格介绍一下各个属性的作用:

属性 功能
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搭一个简单的门,黑色的是门框,白色的是门板
Unity Hinge Joint铰链组件_第4张图片
然后我们在门板上添加铰链组件,并设置属性
Unity Hinge Joint铰链组件_第5张图片
设置好Y轴后只需要将锚点移动到旋转中心就可以了。
Unity Hinge Joint铰链组件_第6张图片
之后运行Unity,在Scene场景中给门板一个力,使其旋转,最简单的方法就是碰撞

我们使用一个小球给门板施加力
举个例子

Unity Hinge Joint铰链组件_第7张图片
简单的开门效果就实现了。


下面用代码实现一下开门关门效果:

首先加一个控制开门关门的按钮,名字叫OpenBtn
Unity Hinge Joint铰链组件_第8张图片

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);
    }

    /// 
    /// 开关门的方法
    /// 
    void OpenDoor()
    {
     
        if (!isOpen)
        {
     
            joint.targetVelocity = -30;
            text.text = "关门";
        }
        else
        {
     
            joint.targetVelocity = 30;
            text.text = "开门";
        }
        gameObject.GetComponent<HingeJoint>().motor = joint;
        isOpen = !isOpen;
    }

}

然后在组件上设置一下限制:
Unity Hinge Joint铰链组件_第9张图片
运行一下看看效果
Unity Hinge Joint铰链组件_第10张图片
以上就是Hinge Joint 铰链组件的简单使用

拥有自己的服务器,无需再找攻略

Chinar 提供一站式《零》基础教程

使有限时间 具备无限可能!

先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: [email protected]

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

你可能感兴趣的:(Unity,3D,Demo,unity链条组件,Hinge,Joint,unity铰链,unity,Joint组件,unity绳子组件)