加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Unity用HingeJoint作可以开关的门

(2016-05-19 21:40:53)
标签:

unity

hingejoint

分类: 游戏开发/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 JointAxis坐标,将箭头保证如门板的上方向平行(一般设置为(0,1,0)),然后调节Anchor坐标,使得箭头的位置出现在门板与门框的缝中,并尽量位于门板侧面的中央位置,然后这个时候其他的设置就根据自己的需要设置了,比如设置Spring(弹簧效果),Motor(电机效果),Limits(限制门的旋转角度),下面Break ForceBreak Torque都是破坏可以使用的门的力或者力矩的设置,比如可以设置枪击门后可以击坏门,最后一个选项需要注意的是Enable Collision,如果此项不勾选上的话,门被推开,可能可以旋转360度。设置完成后,就可以看到一个可以用打开的门了。


    2016年5月25日补充,其实Hinge Joint中的Anchor就是铰链的旋转轴,添加了Hinge Joint之后,物体摆动的旋转轴,就是此处指定的Anchor,因此物体旋转可能与铰链连接物体毫无关系

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有