1.8.1 概要
被武士砍中后,怪物将向四面八方飞散。
动作的不同将导致攻击力度的强弱表现不同,被攻击的各个对象的反应也有很大差异。在 格斗游戏中,对对手一顿拳打脚踢之后,看到其步履蹒跚的样子,往往可以感受到他的疼痛。 相反如果对手显得从容不迫,即使动作再华丽也只能给人一种攻击力很弱的印象。
有时候我们常常听到“攻击反馈”的说法。在玩游戏时大家应该都有过感觉按键和摇杆好 像变重了的经历吧?可以说这种游戏通过视觉和听觉把攻
击反馈非常完美地呈现了出来。
我们将通过怪物的四处飞散来表现武士的攻击强度。另
外,我们也将实现上节提到的靠近斩杀怪物会获取高分的规
则,并使“在多近的距离斩杀了怪物”影响怪物的飞散方式。
不过每次都采用同样的方式飞散开未免有些单调,因
此我们会调整飞散的方向使每次的效果都略有不同。 图 1.27 怪物被砍中后向四周飞散
1.8.2 想象一下“圆锥体”
在考虑实现方法之前,我们首先整理一下“需要做什么”。用专业术语来说这叫作需求分析。 ● 要让怪物华丽地四处飞散
● 让每次的动作都各不相同
“华丽”这种描述对于编程来说是一个比较暧昧的说法。应该描述得更为具体一些。
前面我们已经提到过把若干个怪物编成一个小组,并通过这个小组来执行被攻击判定。受
到攻击时小组内的所有怪物都将四处飞散。而如果怪物们都向着同样的方向飞去,将毫无“华
丽”可言。换句话说,所谓的“华丽”,应该是这些怪物尽量朝着不同的方向飞散开来。
这个被刀砍中然后各自飞散开的过程,更类似于炸弹爆炸的画面。由于怪物被刀砍中时受 到了某一方向的作用力,因此往相反的一侧飞出才显得自然。武士具有右斩、左斩的动作。每 个动作都将令怪物向反方向飞出。
“靠近斩杀时怪物将更华丽地飞散开”这个要素也是必要的。虽然单纯改变速度也能达到类
似的效果,但为了让玩家更容易地了解是否完美地砍中了怪物,我们将飞散的方向改为前后方
向。如果从前面飞来的怪物都按照相同的方向弹开,就能让玩家强烈地感受到攻击的力度。
那么我们再次细化需要完成的工作。
● 怪物朝不同方向飞出
● 根据动作的不同往左或往右飞出
● 根据斩杀时距离的远近调整为前后方向 ● 每次飞出的方式都有变化
要是每次飞出的方式都不一样,很多读者可能会想到使用随机数。不过如果仅对飞出的方 向和速度进行随机化处理,虽然可以改变飞出的方向,但是不能够保证怪物会按我们期待的方 向飞出。
像这样“想在随机化的同时进行某种程度的倾向控制”的时候,解决问题的关键就是先确 定好关键性的原则,再使用随机数改变细节参数。
这里我们参考水管喷头喷水的情景,决定使怪物沿着圆锥的表面飞出,也就是说圆锥的朝 向基本上决定了飞散的方向,底面的半径则决定了飞散开的范围(图 1.28)。
Unity游戏设计与实现——1.8 使被砍中的怪物向四处飞散
书名: Unity游戏设计与实现
作者: [日] 加藤政树
出版社: 人民邮电出版社
副标题: 南梦宫一线程序员的开发实例
译者: 罗水东
出版年: 2015-2
页数: 384
定价: 79.00元
装帧: 平装
ISBN: 9787115384249