Project1

标题: 关于ACT游戏的群攻技能的判定。 [打印本页]

作者:  眠     时间: 2017-4-16 09:06
标题: 关于ACT游戏的群攻技能的判定。
本帖最后由  眠  于 2017-4-22 09:20 编辑

说起来,假如在编写2d的ACT游戏的时候。
有个这样的疑问。
是关于只有一次伤害的群攻技能一般是如何设置的问题。比如就是一般的普通斩击,或者是一个范围的爆炸伤害。


比如在玩家使用了一个叫火焰柱的魔法技能之后,在前方产生了一个火柱。
假设这个火柱是一个32X64像素,持续时间60帧,且对单个敌人只有一次伤害判定的长方形区域。

如果是对单体敌人的话,只需要在击中一个敌人之后把伤害判定关闭就可以了。

但是如果要设置这个技能在持续的期间可以攻击复数敌人的话,应该用什么思路去实现呢?


*假设敌人是没有无敌时间的。(虽然设置无敌时间的方法比较简单,但是我觉得在手感上会有所影响,一些老游戏这样做真的让人觉得很不舒服,比如洛克人某几作,很坑,多个攻击命中时候只会有一个生效。)



一直没有什么时间去做。

后来我是通过这种思路实现的。
读取地图编号,获取这个攻击在这个地图内需要判断的敌人对象,一个地图事件编号的数组。
已判断的对象换成一个不需要判断的编号。
下次进行这个攻击的时候再获取一次这个组。

可判读组在有怪物死亡时刷新。

这样算是我自己考虑的比较完善的一种结构。
唔,制作ACT游戏的时候,大致也会想要尽量高效,避免不要的运算。

虽然这个时代基本不需要考虑性能的限制也是大家的共识了,但是可以的时候还是尽可能做的好一点。
作者: 百里_飞柳    时间: 2017-4-16 09:36
给你的每一次攻击添加一个已经处理了伤害的敌人的数组
每一次成功给一个敌人附加了这个攻击的伤害后,把这个敌人加入到那个数组中
下一次回到判定攻击时,如果该敌人在数组中,就跳过?
还可以设置敌人存留在这个数组中的时间,到了一定时间后把敌人从数组中删去
这次攻击完全结束后释放数组

其实感觉你的想法怪怪的,一次判定的群体攻击,直接获取目标位置的所有事件再全部判定下不就行了,
一次释放的持续停留处理的攻击,那就应该一直判定目标位置的所有事件啊
作者: yang1zhi    时间: 2017-4-16 09:45
一次伤害只计算一次不就好了吗,又不是多次伤害要计算伤害间隔。
多个对象,就建个数组把对象都放进去好了
作者: fux2    时间: 2017-4-16 21:40
不是加个buff就可以解决的问题吗
作者: soulsaga    时间: 2017-4-17 10:24
把命中的敌人加个BUFF来判断啊..好方法..




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1