- IP属地
- 未知
- 2019/01/30
- 11
- 23
- · 发布于未知
我搬我自己。顺便剪除了原帖中的一些废话。
引入:
众所周知,terraria中存在无敌帧这么一个机制:当你用某些武器攻击到怪物之后,怪物会获得一段时间的无敌帧,在这一段时间内怪物“不会受到伤害”。
因此,用迷你鲨配合陨石子弹时射击某一个怪物时,连续的两发子弹只有一发能击中怪物;
因此,用虎爪站撸世纪花时要特别注意不能挂雨云或者召唤小蜘蛛,否则虎爪会打不出应有的伤害。
按照常识,我们知道那些能穿透敌人的子弹、魔法或剑气一般会给敌人造成无敌帧,许多召唤物也会给怪物造成无敌帧。
但是在游戏过程中,细心的玩家可能会发现以上的经验会有些例外,比如说:
玩家A在打月总时放出了一条星尘龙,并且手里拿着耳膜击碎者+叶绿弹输出,他发现星尘龙尽管会造成无敌帧,但并没有影响到叶绿弹的输出。
玩家B在毕业之后造了一堆夜明弹玩耍,他发现虽然夜明弹会穿透,但它们之间并不会互相影响输出。这个特性与陨石子弹非常不同。
更细心的玩家C发现即使是造成无敌帧的子弹\魔法\剑气\召唤物,它们造成无敌帧的时间都不一定完全一样:比如说棱镜造成的无敌帧时间明显就比鲨龙卷召唤物的碰撞造成的无敌帧时间短很多。
以及还有一些问题:
燃烧、霜火、诅咒焰等debuff会不会造成骗伤?
多人联机时玩家A的攻击造成的无敌帧会不会影响玩家B的输出?
这一切都需要我们对无敌帧机制进行更深入的研究。
说明:
NPC、抛射体:
首先需要对这个帖子里所说的NPC和抛射体的概念做一些说明。
这里的NPC不仅包含电工妹和哥布林工匠等城镇NPC,还包含所有的怪物,甚至一部分怪物打出的魔法——比如地牢的黑暗法师打出的水弹,猪鲨吐出的泡泡。
抛射体即projectile,顾名思义,抛射体就是按照一定轨迹飞出去的东西,比如子弹、各种魔法、各种剑气等等。
注意:召唤物、各类长矛、悠悠球都是抛射体。
伤害途径:
然后来仔细思考一下玩家对怪物造成伤害的主要途径:
1.用剑等近战武器挥砍。
2.用枪械、魔法书等武器扔出抛射体,抛射体伤害怪物。
需要注意的是剑、镐、斧等大多数近战武器都属于第一类。但悠悠球、各类长矛武器以及Arkhalis剑都属于第二类。
手雷等爆炸物也属于第二类。
为了以下行文方便,我们把第一类统称近战武器,第二类统称抛射体。
普通无敌帧的内部实现:
游戏中每个怪物都拥有一个计时器immune,这是一个长度为256的自然数列。每个tick(1/60秒),数列中的每个值都会下降1,直到0为止。
于是怪物A的immune中的第k个数n表示怪物A对玩家k的无敌帧还会持续n个tick。
没错,游戏中不同玩家对怪物(即使是同一个怪物)造成的无敌帧是独立计算,互不影响的。
这是游戏中最普遍的无敌帧。
当然,游戏里还有两类无敌帧,这两类无敌帧与下面会说到的两类特殊抛射体绑定,所以详细的之后再说。
引入:
众所周知,terraria中存在无敌帧这么一个机制:当你用某些武器攻击到怪物之后,怪物会获得一段时间的无敌帧,在这一段时间内怪物“不会受到伤害”。
因此,用迷你鲨配合陨石子弹时射击某一个怪物时,连续的两发子弹只有一发能击中怪物;
因此,用虎爪站撸世纪花时要特别注意不能挂雨云或者召唤小蜘蛛,否则虎爪会打不出应有的伤害。
按照常识,我们知道那些能穿透敌人的子弹、魔法或剑气一般会给敌人造成无敌帧,许多召唤物也会给怪物造成无敌帧。
但是在游戏过程中,细心的玩家可能会发现以上的经验会有些例外,比如说:
玩家A在打月总时放出了一条星尘龙,并且手里拿着耳膜击碎者+叶绿弹输出,他发现星尘龙尽管会造成无敌帧,但并没有影响到叶绿弹的输出。
玩家B在毕业之后造了一堆夜明弹玩耍,他发现虽然夜明弹会穿透,但它们之间并不会互相影响输出。这个特性与陨石子弹非常不同。
更细心的玩家C发现即使是造成无敌帧的子弹\魔法\剑气\召唤物,它们造成无敌帧的时间都不一定完全一样:比如说棱镜造成的无敌帧时间明显就比鲨龙卷召唤物的碰撞造成的无敌帧时间短很多。
以及还有一些问题:
燃烧、霜火、诅咒焰等debuff会不会造成骗伤?
多人联机时玩家A的攻击造成的无敌帧会不会影响玩家B的输出?
这一切都需要我们对无敌帧机制进行更深入的研究。
说明:
NPC、抛射体:
首先需要对这个帖子里所说的NPC和抛射体的概念做一些说明。
这里的NPC不仅包含电工妹和哥布林工匠等城镇NPC,还包含所有的怪物,甚至一部分怪物打出的魔法——比如地牢的黑暗法师打出的水弹,猪鲨吐出的泡泡。
抛射体即projectile,顾名思义,抛射体就是按照一定轨迹飞出去的东西,比如子弹、各种魔法、各种剑气等等。
注意:召唤物、各类长矛、悠悠球都是抛射体。
伤害途径:
然后来仔细思考一下玩家对怪物造成伤害的主要途径:
1.用剑等近战武器挥砍。
2.用枪械、魔法书等武器扔出抛射体,抛射体伤害怪物。
需要注意的是剑、镐、斧等大多数近战武器都属于第一类。但悠悠球、各类长矛武器以及Arkhalis剑都属于第二类。
手雷等爆炸物也属于第二类。
为了以下行文方便,我们把第一类统称近战武器,第二类统称抛射体。
普通无敌帧的内部实现:
游戏中每个怪物都拥有一个计时器immune,这是一个长度为256的自然数列。每个tick(1/60秒),数列中的每个值都会下降1,直到0为止。
于是怪物A的immune中的第k个数n表示怪物A对玩家k的无敌帧还会持续n个tick。
没错,游戏中不同玩家对怪物(即使是同一个怪物)造成的无敌帧是独立计算,互不影响的。
这是游戏中最普遍的无敌帧。
当然,游戏里还有两类无敌帧,这两类无敌帧与下面会说到的两类特殊抛射体绑定,所以详细的之后再说。