Project1

标题: 非SV模式下,分段伤害怎么持续显示? [打印本页]

作者: edchgl    时间: 2021-11-24 00:20
标题: 非SV模式下,分段伤害怎么持续显示?
就是连续攻击次数哪里,怎么样才能做到在动画的过程中就持续显示伤害了,而是等动画结束了才一起出来。
最近用了MOGBATTLEHUD插件,发现怪用技能打人是分段伤害显示的,但是人打怪还是等技能结束了才出伤害。
另外有没有加强打击感的插件呢?麻烦介绍一下,谢谢各位大佬
作者: chinx    时间: 2021-11-25 11:22
本帖最后由 chinx 于 2021-11-25 19:04 编辑

你想要的这种分段伤害显示,目前有2个比较推荐的方法可以支持:
一是用moghunter(MOG)的动画闪光伤害,也就是说,只要动画发生闪光,就跳伤害,也可以配置什么情形下生效、调低闪光强度降低画面污染提高观感。但这个插件似乎有一些问题我不太记得了。
二是用yanfly(YEP)的战斗行动序列插件,亲自编排什么时候第几帧执行什么动作,第几帧发生伤害,综合演出效果最好但学习成本较高。

第二个问题关于打击感,说它是玄学也没毛病,这完全是靠自己的理解了,因为打击感这种东西,事实上是行动产生的结果的反馈,
这些结果包括了画面闪烁、晃动、音效声场响度的变化配合、所有动作嵌合的精准程度、帧速率的迟滞/加速变化等等。
目前看来MV还没有现成的插件可以做到这些全部内容。你可以先从震动入手(yanfly的行动序列3插件会导致震动只能横向晃动,Y轴需要自己修改插件)。


顺便提一下,我个人修改YEP_X_ActSeqPack3.js以支持Y轴震动的方法如下,供参考:

JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // Spriteset_Battle
  3. //=============================================================================
  4.  
  5. Yanfly.ASP3.Game_Screen_prototype_startShake = Game_Screen.prototype.startShake;
  6. Game_Screen.prototype.startShake = function(power, speed, duration){
  7.         Yanfly.ASP3.Game_Screen_prototype_startShake.call(this, power, speed, duration);
  8.         this._randomRateX = [-1, 0, 1][Math.randomInt(3)];
  9.         this._randomRateY = [-1, 0, 1][Math.randomInt(3)];
  10. };
  11.  
  12. Spriteset_Battle.prototype.updatePosition = function() {
  13.     var zoom = $gameScreen.zoomScale();
  14.     var clamp = BattleManager.cameraClamp();
  15.     this.scale.x = zoom;
  16.     this.scale.y = zoom;
  17.     var screenX = -1 * $gameScreen.zoomX() * zoom + Graphics.boxWidth / 2;
  18.     var screenY = -1 * $gameScreen.zoomY() * zoom + Graphics.boxHeight / 2;
  19.     if (clamp && zoom >= 1.0) {
  20.       var clampX1 = -Graphics.boxWidth * zoom + Graphics.boxWidth;
  21.       var clampY2 = -Graphics.boxHeight * zoom + Graphics.boxHeight;
  22.       this.x = Math.round(screenX.clamp(clampX1, 0));
  23.       this.y = Math.round(screenY.clamp(clampY2, 0));
  24.     } else if (clamp && zoom < 1.0) {
  25.       this.x = Math.round((Graphics.boxWidth - Graphics.boxWidth * zoom) / 2);
  26.       this.y = Math.round((Graphics.boxHeight - Graphics.boxHeight * zoom) / 2);
  27.     } else {
  28.       this.x = Math.round(screenX);
  29.       this.y = Math.round(screenY);
  30.     }
  31.     if($gameScreen._shakeDuration % 10 == 0){
  32.             $gameScreen._randomRateX = [-1, 0, 1][Math.randomInt(3)];
  33.             $gameScreen._randomRateY = [-1, 0, 1][Math.randomInt(3)];
  34.     }
  35.     this.x += Math.round($gameScreen.shake()*($gameScreen._randomRateX || 1));
  36.     this.y += Math.round($gameScreen.shake()*($gameScreen._randomRateY || 1));//震动加Y轴
  37. };





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