码迷,mamicode.com
首页 > 移动开发 > 详细

unity3d android开发笔记之空气墙的实现

时间:2015-08-03 06:30:43      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

  通过做unity3d的demo,我发现了一些小问题,并且解决了不少,遇到的问题我没有及时记录下来,以后我会通过随笔的方式记录下我的成长经历,在这里先缅怀下我逝去的时光。T.T..

  However,从今天开始做的第一件事,就是把我做的demo的功能更新的实现方法放在这里,供大家日后参考,以提供小小的解决方案。

  先放一张游戏图,做的是一个人,在地图上行走,今天要讲到的是,关于如何实现空气墙的讨论。

  技术分享

   众所周知,一般来说,地图是有限制大小的,我们不需要玩家跑到一些限制地点,例如地图的极限边缘,这样就失去了可控性,而且容易触发各种意外。所以最好的方式是限制玩家的行动范围,这就出现了游戏中著名的空气墙,明明3D游戏中,可以看得到眼前的景象,却被一堵空气墙挡住了去路。这不是不让你去,而是你过去了,就麻烦了,所以,称得上是良心的作品,一般范围会放的很宽,因为考虑的更多了嘛,而一些赶工的作品呢,为了避免遇见突发情况,就喜欢将玩家尽可能关在“空气墙里”,这样更容易写程序。题外话说多了,我们来讲一讲原理吧。其实空气墙是基于collider的碰撞器,碰撞器检测到我们的角色与空气墙接触了,那么就限制我们的角色坐标,不让他越过雷池了,而大多数的空气墙使用什么方法来避免玩家越过呢?

  有些人突然会想到,用类似于地图平面,我们能站在平面上,无法穿过去,就是因为地图带有collider属性,如果我们再弄一块 “平面”,竖起来放,加上collider,不就做成了空气墙了吗?这样做是可行的,然而平面---也即是plane是基于mesh 的碰撞检测,是基于mesh顶点的,比较耗费运算资源,而且碰撞壁没有厚度,物体穿过碰撞壁的风险较高。而比较正规的做法应该是用box collider拼接,有利于运算效率和减少误判。相关的例子,可以参考一些官方的demo和一些已经成熟了的游戏demo。

  来,那个angry-bots我来给大家截个图,大家就知道了,在那个官方游戏demo里,程序猿是如何实现空气墙的。

技术分享技术分享

  大家看到了,在environment下的 collider 里面有好多的capsule 和cube 都是用来拼接出复杂的空气墙系统的,而打开其中的一个cube,我们看到了,在左图中是一个墙面,然而我们无法离墙太近,因为墙面是设有空气墙的,我们在右图中打开mesh,看到了贴图的前面的确竖着黑压压一个长方体块儿。

  好了,现在已经和大家讨论了正确使用空气墙的做法了,一起进步吧~~~

unity3d android开发笔记之空气墙的实现

标签:

原文地址:http://www.cnblogs.com/pengsy/p/4697209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!