【静下心学习Unity】学习笔记 (三)Unity Physics - Hinge Joint(铰链关节) 实现门的功能
来源:互联网 发布:mpp文件打开软件 编辑:程序博客网 时间:2024/05/04 12:10
Hinge Joint
摘自Unity圣典 - Hinge Joint 章节
The Hinge Joint groups together two Rigidbodies, constraining them to move like they are connected by a hinge. It is perfect for doors, but can also be used to model chains, pendulums, etc.
铰链关节由两个刚体组成,约束它们像连在一个铰链上一样运动,适用于门,不过对于典型的链子、钟摆等同样适用。
在通过浏览Unity圣典中的用户手册进行重新学习Unity的过程中,看到了之前并未学习的Joint(圣典中翻译为:关节)一章,其中的Hinge Joint(铰链关节)指出,可以通过该组件实现门与墙(门柱)的连接功能,以此来实现玩家打开门时,对门施加一个力,通过这个力与铰链关节内部力的作用,使得门有一种被推开的表现。
接下来进入实际操作阶段。
步骤
- 新建两个Cube,一个作为墙体(门柱)命名为Wall,一个作为门命名为Door,Scale与Position可以按照自己的喜好定义。
- 再新建一个Cube,作为玩家的代替物,命名为Person。
- 接下来,为Wall、Door、Person都添加RigidBody组件,将三者的RigidBody组件的Use Gravity属性的勾去掉(设为false,不使用重力,因为此处我们没有地面),其中,Wall与Person的RigidBody组件的Is Kinematic属性打上勾(设为true,使其不受物理引擎驱动,Wall是为了防止其移动,Person是为了防止其受到力不断旋转—看的心塞=v=)
- 在Door物体上添加Hinge Joint组件,这里就不解释Hinge Joint组件的各属性名了,有兴趣的朋友可以访问Unity官方手册或者Unity圣典中的用户手册查阅,这里也给出圣典链接:(http://www.ceeger.com/Components/class-HingeJoint.html)
为Hinge Joint组件设置值:
Connected Body 连接的物体保留为None。
这里有的朋友可能就会问了,为什么不是将Wall赋值到这里来,使得门与墙连接呢?因为留空的话,会默认与世界连接,而这一点,在手册上也有提到:A single Hinge Joint should be applied to a GameObject. The hinge will rotate at the point specified by the Anchor property, moving around the specified Axis property. You do not need to assign a GameObject to the joint’s Connected Body property. You should only assign a GameObject to the Connected Body property if you want the joint’s Transform to be dependent on the attached object’s Transform.
单独的铰链关节要连在游戏对象上。铰链会绕着Anchor 属性指定的点,沿着 指定的Axis 属性方向移动。不需要给关节的Connected Body 属性分配游戏对象。只有希望关节的Transform依赖附加对象的Transform时,才需要分配游戏对象给Connected Body属性。
Anchor 锚点位置,该值按照门与墙的相对位置来设置,如下图:
这里的Wall在Door的z轴的负方向上,所以将Anchor设为0,0,-0.5。Anchor的x y z值对锚点的影响为:z为0时,z轴方向上锚点在原点,z=0.5时,z轴方向上锚点在物体的边缘,大家多设置几个值就明白了。在这,我们需要将锚点设置到门与墙连接的位置。- Axis 坐标轴,有点类似与Rotation对物体的影响一样,这里我们需要门以与墙连接的位置为轴进行旋转,所以设置Axis = 0,1,0
- 设置完毕,运行项目,点击Person物体,直接通过移动工具使其移动,并令其撞上门(像推开门一样),就可以看到门被推开,过一会儿会旋转回原位(但由于我们设置比较简单,若门陷入墙中时将无法自行返回,这需要进行进一步的设置,子旭表示还未实现- -因为我也是刚学到这里的嘛~求谅解。)如下图:
Over~
- 【静下心学习Unity】学习笔记 (三)Unity Physics - Hinge Joint(铰链关节) 实现门的功能
- Hinge Joint 铰链关节
- 【静下心学习Unity】学习笔记 (一)简介
- 【静下心学习Unity】学习笔记 (二)Unity基础知识点
- unity关节(joint)讲解
- Unity物理引擎:关节简介(铰链关节)
- unity物理关节之--铰链关节
- 【unity学习笔记】unity实现钩子功能
- 【Unity 3D】学习笔记四十一:关节
- Unity 关节
- unity 关节
- unity关节
- Unity物理关节:关节简介(可配置关节)
- Unity 使用物理射线(Physics.Raycast),实现扇形区域碰撞检测三种方法
- Unity 使用物理射线(Physics.Raycast),实现扇形区域碰撞检测三种方法
- Unity优化大全(三)之CPU-Physics
- Unity优化大全(三)之CPU-Physics
- Unity3D铰链关节的简单实例
- 项目实施中CRP的含义,以及各个阶段
- 责任链模式(java语言实现)
- javaweb基于内容的图片搜索引擎(4)_前台检索以及结果
- vertical-align: middle垂直居中
- web开发中表单的验证问题
- 【静下心学习Unity】学习笔记 (三)Unity Physics - Hinge Joint(铰链关节) 实现门的功能
- popupwindow的学习
- Maven学习记录(一)--IDEA下环境配置
- SQL中的limit
- c++第三次实验-1
- 关于this
- 【珍藏】linux 同步IO: sync、fsync与fdatasync
- c++作业03
- struts2标签又显示不出来