大伙儿晚上今天我又来跟大家伙儿唠唠我最近瞎折腾的一个小玩意儿——一个用重力感应来玩的小游戏。过程嘛有那么点意思,也有点磕磕绊绊,正好拿出来给各位分享分享。
灵感咋来的?
这事儿得从前些天说起。我瞅见邻居家小孩儿捧着个手机,歪歪扭扭地晃悠,玩得那叫一个投入。凑过去一瞧,是个控制小球走迷宫的游戏,不过人家是用手指划拉屏幕的。我当时脑子里就“叮”一下,咱手机不都有那什么重力感应吗?要是把这玩意儿用上,直接晃手机来控制小球,那不是更有意思?感觉就像手里真端着个珠子在盘子里滚一样。
有了这想法,我就有点坐不住了。咱也不是啥专业开发,就是喜欢瞎捣鼓。以前也零零散散接触过一点点游戏制作的皮毛,心想,试试呗,万一成了?
说干就干,动手!
第一步,选家伙事儿。 我寻思着用啥做?现在流行的引擎花里胡哨的,学起来费劲。我就想起了以前稍微摸过的Unity,感觉做点小东西应该还行,网上教程也多,遇到问题好找答案。行,就它了!
第二步,搭个基础场景。 打开Unity,新建个项目。先整个球体,这就是咱的主角了。再来个平面,当小球滚动的平台。最简单的,一个球,一个板子,齐活儿。
第三步,让球动起来。 这可是关键!我得让手机的晃动能控制球的滚动方向。这就得用上重力感应的数据了。我查了查资料,Unity里头有个叫的玩意儿,能获取手机在X、Y、Z轴上的加速度。这不就是我想要的嘛
我把获取到的X轴和Y轴的加速度(Z轴先不管,咱是平面滚动)作为力,施加到小球上。编译到手机上一试——嚯!球是能动了,但那叫一个“窜”!稍微一歪手机,球跟打了鸡血似的飞出去了。不行不行,太灵敏了,根本控制不住。
第四步,调整手感。 琢磨了半天,发现直接用加速度值太猛了。我得给它“降降速”,再加点“阻尼”啥的,让它不那么贼。试了好几种方法,比如把获取到的加速度值乘以一个小于1的系数,再给小球的刚体加上点摩擦力。来来回回改了好几次参数,编译,测试,再改,再测……那几天,我手机屏幕都快被我戳出火星子了。
经过一番折腾,小球的滚动总算是变得平滑一些了,能勉强跟着我的意图走了。虽然还不是特别完美,但起码能玩了不是?
加点好玩的进去
光一个球在板子上滚来滚去也忒单调了。得加点挑战和目标!
整点障碍物。 我在平台上放了些固定的方块当墙壁,还挖了几个洞。小球要是掉进洞里,那就算输了。
然后,设定个终点。 在平台的某个位置,我放了一个特殊标记的区域,小球滚到那儿就算过关。
这样一来,游戏就有了基本的样子:晃动手机,控制小球,躲开墙壁和洞穴,到达终点。
我又寻思着,能不能搞点动态的障碍?比如会移动的墙,或者定时消失又出现的洞?这个稍微复杂点,我先留了个念想,想着以后有精力再加。
界面和音效,不能少
一个游戏光有玩法也不行,起码的界面得有。我就简单做了个开始界面,一个“开始游戏”的按钮。游戏结束的时候,根据输赢,显示个“你赢了!”或者“掉下去了,再来一次!”的提示。
音效嘛我也没整太复杂的。小球滚动的时候给个“咕噜噜”的音效(找了个差不多的素材),撞墙的时候“砰”一声,掉洞里“扑通”一下。虽然简单,但有了声音,感觉就不一样了,生动了不少。
测试,不停地测试
做完这些,我自己先玩了好几遍。然后就拉着家里人,还有几个爱玩游戏的朋友都来试试。收集他们的意见那可是相当重要。
有人说:“你这球也太滑了,刹不住车!”
有人说:“这关太简单了,能不能再难点?”
还有人说:“我晃得有点头晕,是不是灵敏度还能再调调?”
这些反馈都特别宝贵。我又根据大家的意见,反复调整小球的物理参数、关卡的布局难度、重力感应的灵敏度等等。比如,为了解决“太滑”的问题,我适当增加了小球的线性阻尼和角阻尼;为了调整难度,我修改了洞的位置和大小,还有墙壁的摆放。
像个啥样了?
折腾了大概有一个多礼拜的业余时间,这个重力感应小游戏总算是有了个能看的雏形。就是控制一个小球,在一个有点像迷宫的板子上,你得歪着手机,让它躲开各种障碍和陷阱,滚到指定的终点去。
虽然功能简单,画面也朴素得很(我美术不行,都是用的Unity自带的或者网上找的免费素材随便拼凑的),但看着自己一步步把一个想法变成一个能玩的东西,心里头还是挺有成就感的。尤其是看着朋友们歪着脖子,小心翼翼晃着手机玩我做的小游戏,那种感觉,真不赖!
这就是我这回做重力感应小游戏的整个过程了。没啥高深的技术,就是瞎折腾,图个乐子。希望我这点小经验,能给同样喜欢捣鼓的伙计们一点点启发。以后我要是再折腾出啥新玩意儿,再来跟大家伙儿分享!