您的位置:首页 > 移动开发 > Unity3D

Unity3D----导入模型的碰撞检测

2012-07-04 21:44 288 查看
   很多人在初学Unity3D的时候,可能会碰到这样一个问题:导入Unity3D的模型,给模型添加RigidBody后,模型会

一直往下落。

   那么,我们如何解决这个问题呢?

   如果你尝试过创建一个Cube之类的,添加RigidBody。运行程序后,你会很明显的发现这个Cube可以掉落到地面。

   因而,想要我们的模型也这样,可以将一个Cube与模型进行绑定,然后调整Cube的碰撞体积,并去掉Cube的渲

染。这样我们就可以让模型享有Cube的碰撞检测,而又不会看到Cube。

  1.导入资源:Assets--Import Package--Terrain Assets,导入系统的地形贴图等资源。

  2.添加模型:在Assets下建立一个Model文件夹,将自己的3D模型放入Model中。

  


 

  3.建立地形:Terrain--Create Terrain。建立一个地形,在地形编辑部分点击Paint the

 terrain texture图标,选择一个Texture,并调整Tile Size X, Tile Size Y。

  如下图所示:

  


  

  4.将模型拖到Unity3D场景编辑中,并调整位置。随便添加个方向光,看起来会比较顺眼。这个时候,如果你给模型

添加RigidBody,虽然它会有重力,但不会与Terrain进行碰撞。



  

  5.创建碰撞体:GameObject--Create Other--Cube。将Cube放到模型的中心位置(其他位置也可以),你可以看到Cube

有个Box Collider对象。调整Box Collider的Center和Size,也就是碰撞范围(绿色的矩形),让碰撞范围符合整个模

型。建议分别通过X,Y,Z轴朝向进行调整。如图所示。





  


  6.在Hierarchy视图上,将模型(我这里是Tank)拖到Cube上。然后点Cube,Component--Physics--RigidBody给Cube

添加一个刚体。然后在Cube的属性中,将Mesh Renderer勾去掉,也就是不进行渲染Cube。

  


  7.运行程序,你会发现模型安稳的落在了Terrain上了。

  


  虽然这个例子很简单,但是大家也都基本了解了模型的碰撞思路(利用Cube,Sphere等GameObject来进行碰撞,效

率上比较高)。

  学习到这里,稍微思考一下的童鞋应该会想到,如果是一个形状怪异的模型怎么办?

  

  当然,你也可以将它作为Cube或Sphere等形状进行碰撞,但可能精确程度会很差。就例如上面例子里的坦克,最上

面的炮头左边是空的。

  这样我们可以创建多个Cube进行组合,来增加碰撞的精确度。大家可以自己下去试

试。

  转载请注明出处:http://blog.csdn.net/ml3947

  PS:读大学的时候,写过一段时间博客,也与很多java学习者交流。但工总以后,很久没有写博客了,只是突然发

现,每一个IT牛人,基本都会坚持写博客,与大家分享交流。工作一年了,我并不算是牛人,但也希望某一天成为一

个牛人。以后会坚持写博客,大家都加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: