很多人在初学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牛人,基本都会坚持写博客,与大家分享交流。工作一年了,我并不算是牛人,但也希望某一天成为一
个牛人。以后会坚持写博客,大家都加油!