Unity用HingeJoint作可以开关的门

标签:
unityhingejoint门 |
分类: 游戏开发/Direct3D/Unity3D |
今天在使用Unity做活动的门,其实Unity中有多种办法可以做可以开启的门,比如用触发器,比如用下面我使用的Hinge Joint。
Unity中提供了多种Joint(关节)可供使用,这些Joint可以来模拟诸如弹簧、铰链的功能。具体到开关门,可以采用的是Hinge Joint(被翻译成铰链关节),当然,这里并不是限制大家的思维,其实可以采用Spring Joint(弹簧关节)来做门,这样带来的搞笑的成分也是不错的,但是这里想分享的是模拟真实的门。
门分为门框和门板部分,如果你是如下图一样,用多个Cube构建的门的话,那么至少将门框的一边,以及门板设置为Rigidbody,并将门框的Rigidbody中的Is Kinematic选项勾上,使其不受重力影响,否则会出现倾斜等不正常的状况。
http://s16/mw690/001ZkYorty71OnW8gmb1f&690
在将门框一边(或者整个门框)以及门板设置为Rigidbody以后,可以在一侧门框(或者如果门框是个整理的话,那么在整个门框上)添加Hinge Joint,添加完成的效果如下图,至于为什么不能在门板上添加,我只能说,首先查到的手册资料上面指导是这样的,同时我尝试过门板上添加,效果不好,但是现在我确实没有弄明白Hinge Joint整个工作原理,所以我也说不明白,如果有能说明白工作原理,已经箭头的含义,欢迎留言讨论。然后,调整Hinge Joint的Axis坐标,将箭头保证如门板的上方向平行(一般设置为(0,1,0)),然后调节Anchor坐标,使得箭头的位置出现在门板与门框的缝中,并尽量位于门板侧面的中央位置,然后这个时候其他的设置就根据自己的需要设置了,比如设置Spring(弹簧效果),Motor(电机效果),Limits(限制门的旋转角度),下面Break Force和Break Torque都是破坏可以使用的门的力或者力矩的设置,比如可以设置枪击门后可以击坏门,最后一个选项需要注意的是Enable Collision,如果此项不勾选上的话,门被推开,可能可以旋转360度。设置完成后,就可以看到一个可以用打开的门了。