Unity Hinge Joint铰链组件 您所在的位置:网站首页 unity机械 Unity Hinge Joint铰链组件

Unity Hinge Joint铰链组件

2024-01-19 03:24| 来源: 网络整理| 查看: 265

Chinar blog :www.chinar.xin

Hinge Joint 铰链

本文提供全流程,中文翻译。 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar —— 心分享、心创新!助力快速学习 Unity Hinge Joint 铰链关节的使用为初学者节省宝贵的时间,避免采坑!

Chinar 教程效果:

在这里插入图片描述

文章目录 1 introduce —— 介绍 2Property —— 属性 3 Example —— 例子

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

1 introduce —— 介绍

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

给物体添加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(); text = button.transform.Find("Text").GetComponent(); button.onClick.AddListener(OpenDoor); } /// /// 开关门的方法 /// void OpenDoor() { if (!isOpen) { joint.targetVelocity = -30; text.text = "关门"; } else { joint.targetVelocity = 30; text.text = "开门"; } gameObject.GetComponent().motor = joint; isOpen = !isOpen; } }

然后在组件上设置一下限制: 在这里插入图片描述 运行一下看看效果 在这里插入图片描述 以上就是Hinge Joint 铰链组件的简单使用

拥有自己的服务器,无需再找攻略 Chinar 提供一站式《零》基础教程使有限时间 具备无限可能!

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

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

Chinar END

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有