我为啥要做这个“超人杨过”游戏?说起来都是眼泪。前阵子在家闲得慌,老婆天天催我带孩子去楼下公园玩。公园那破地方,除了土就是人,我坐着看孩子太无聊了,就想着找点事做。我就琢磨着,能不能搞点啥小项目玩玩,最好是那种暴力点,解压点的。
当时我就在想,能不能搞个那种,上手就能飞,一巴掌能拍死十个坏蛋的武侠游戏?但自己搞模型太费劲了,我就抓了个Unity的免费素材包,里面有个古装小人,看着有点像杨过,索性就叫它杨过了。工具方面,我随便拿了个自己熟悉的C#环境,快速搭了个空架子,准备开始搞我的暴力美学。
确定核心功能:飞与秒杀
我的第一步是让他能动起来。基本的跑跳很快就搞定了。但关键是怎么实现“超人”的飞行能力。我一开始尝试用物理引擎的强制推力,那玩意儿控制起来贼别扭,杨过在天上上蹿下跳,一点都不像个大侠,像个喝多了的蜜蜂。我搞了整整一下午,那个小人一直在天上鬼畜,气得我差点把键盘砸了。
后来我直接放弃了物理推力,改了思路。我直接修改了它的位置参数,搞了个“瞬移式”飞行。就是按住空格,摄像机对着哪儿,它就往哪儿直冲,速度参数直接拉满。为了看起来不那么假,我还特意加了一个粒子特效,像一团火带着他飞。这下杨过不仅能飞,速度快得跟超人似的,嗖的一下就没影了,玩起来手感舒服多了。
实现超人拳与环境破坏
光飞不行,还得能打。如果不能秒杀,那叫什么超人?
- 攻击设定:我没搞什么复杂的剑法。直接粗暴地写了一个碰撞检测脚本,判定半径超级大。只要敌人进了半径,我也不管他什么血量,直接一个代码标记,秒杀,敌人模型原地消失。这就是我的“超人拳”。
- 优化手感:为了让打击感够劲,我特意调大了击中时的屏幕震动参数,震得我屏幕都快裂了,玩起来那叫一个爽。
- 环境破坏:我还试着加入了简单的破坏系统,用一个布尔值控制。让杨过一拳打过去,周围的木头箱子会爆炸,虽然实现得特别粗糙,但是效果很解压。
这玩意儿前后我花了三个周末的零碎时间。等我把这个“超人杨过”弄得差不多能玩的时候,我儿子都从滑梯上摔下来两次了,我才发现我把精力全砸进去了。我一测试,发现这游戏有个大问题:太强了,根本没有挑战性!十分钟就能把所有敌人清光。
我把这个小破游戏文件拷给几个老哥玩,他们笑得不行,说这不叫游戏,这叫“泄愤模拟器”。虽然没法真拿出去当产品,但整个实践过程,从头到尾解决那些飞行和碰撞的别扭问题,让我彻底放松了,比在公园里坐着吹风强太多了。我打算下次再搞个“超人韦小宝”试试,给他加点钞能力。