设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1534|回复: 4
打印 上一主题 下一主题

[有事请教] 战斗界面垂直震动?

[复制链接]

Lv2.观梦者

梦石
0
星屑
298
在线时间
31 小时
注册时间
2023-1-24
帖子
19
跳转到指定楼层
1
发表于 2023-4-9 22:29:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5星屑
各位大佬们,请问有没有战斗界面舞台垂直震动的插件?


排除插件:LiuYue(无效),WAY(装上核心也不行)和Olivia(地图界面有效,战斗界面失效)

Lv3.寻梦者

梦石
0
星屑
3657
在线时间
1133 小时
注册时间
2017-4-6
帖子
278

开拓者

2
发表于 2023-4-9 22:29:38 | 只看该作者
  1. //=============================================================================
  2. // ★ Screen Shake Effects ★                                             1.0.0
  3. //=============================================================================
  4. /*:
  5. * @plugindesc ▶动画 动画中SE触发屏幕振动[2019/07/07] 作者:Aries
  6. * @author Aries
  7. * @param ▶▶插件信息
  8. * @type []
  9. * @default ["名称: Aries_ShakeEffects","作者: Aries","版本: 2019/07/07","更新: ariesofsheratan.itch.io/001l-screen-effects","主页: ariesofsheratan.itch.io"]
  10. * @param
  11. *
  12. * @help
  13. * @param Shake Type
  14. * @text 屏幕振动模式(全局)
  15. * @type select
  16. * @option 默认
  17. * @value Standard
  18. * @option 随机
  19. * @value Random
  20. * @option 水平
  21. * @value Horizontal
  22. * @option 垂直
  23. * @value Vertical
  24. * @default Random
  25. *
  26. * @param Shake SE
  27. * @text 触发屏幕振动的SE文件✚
  28. * @default Skill2
  29. *
  30. * @param 振动强度
  31. * @type number
  32. * @min 0
  33. * @default 20
  34. */


  35. /*
  36. 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

  37. ============================================================================

  38. --------------------------------------

  39. 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
  40. */
  41. // ★ Evaluate Parameters
  42. var Aries = Aries || {};
  43. Aries.P001L_SSE = {};
  44. Aries.P001L_SSE.Param = PluginManager.parameters('Aries_ShakeEffects');

  45. switch (String(Aries.P001L_SSE.Param["Shake Type"]).toUpperCase()) {
  46.     case 'STANDARD': Aries.P001L_SSE.ShakeType = 0; break;
  47.     case 'RANDOM': Aries.P001L_SSE.ShakeType = 1; break;
  48.     case 'HORIZONTAL': Aries.P001L_SSE.ShakeType = 2; break;
  49.     case 'VERTICAL': Aries.P001L_SSE.ShakeType = 3; break;
  50.     default: Aries.P001L_SSE.ShakeType = 1; break;
  51. }
  52. Aries.P001L_SSE.ShakeSE = String(Aries.P001L_SSE.Param["Shake SE"]);

  53. var _aries_p001l_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  54. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  55.     _aries_p001l_pluginCommand.call(this, command, args);
  56.     if (command === 'AriesScreenShakeType') {
  57.         switch (args[0].toUpperCase()) {
  58.         case 'STANDARD':
  59.             Aries.P001L_SSE.ShakeType = 0;
  60.             break;
  61.         case 'RANDOM':
  62.             Aries.P001L_SSE.ShakeType = 1;
  63.             break;
  64.         case 'HORIZONTAL':
  65.             Aries.P001L_SSE.ShakeType = 2;
  66.             break;
  67.         case 'VERTICAL':
  68.             Aries.P001L_SSE.ShakeType = 3;
  69.             break;
  70.         default:
  71.             ;
  72.         }
  73.     }
  74. };

  75. Aries.P001L_SSE.setScreenShakeType = function(type) {
  76.     switch (type.toUpperCase()) {
  77.     case 'STANDARD':
  78.         Aries.P001L_SSE.ShakeType = 0;
  79.         break;
  80.     case 'RANDOM':
  81.         Aries.P001L_SSE.ShakeType = 1;
  82.         break;
  83.     case 'HORIZONTAL':
  84.         Aries.P001L_SSE.ShakeType = 2;
  85.         break;
  86.     case 'VERTICAL':
  87.         Aries.P001L_SSE.ShakeType = 3;
  88.         break;
  89.     default:
  90.         ;
  91.     }
  92. };

  93. // ★ Sprite_Animation
  94. // -----------------------------------------------------------------------------
  95. var _aries_p001l_processTimingData = Sprite_Animation.prototype.processTimingData;
  96. Sprite_Animation.prototype.processTimingData = function(timing) {
  97.     if (timing.se != null && timing.se.name.toUpperCase() == Aries.P001L_SSE.ShakeSE.toUpperCase()) {
  98.         var shakepwr = timing.flashColor[0] * 0.03529411764705882352941176470588;
  99.         var shakespd = timing.flashColor[1] * 0.03529411764705882352941176470588;
  100.         var shakedur = Number(Aries.P001L_SSE.Param["振动强度"]);
  101.         $gameScreen.startShake(shakepwr, shakespd, shakedur);
  102.     } else {
  103.         _aries_p001l_processTimingData.call(this, timing);
  104.     }
  105. };

  106. // ★ Game_Screen
  107. // -----------------------------------------------------------------------------
  108. var _aries_p001l_gameScreen_clearShake = Game_Screen.prototype.clearShake;
  109. Game_Screen.prototype.clearShake = function() {
  110.     _aries_p001l_gameScreen_clearShake.call(this);
  111.     this._shakeVector = new Point(0, 0);
  112. };

  113. var _aries_p001l_gameScreen_startShake = Game_Screen.prototype.startShake;
  114. Game_Screen.prototype.startShake = function(power, speed, duration) {
  115.     _aries_p001l_gameScreen_startShake.call(this, power, speed, duration);
  116.     this._shakeVector = new Point(0, 0);
  117. };

  118. Game_Screen.prototype.shakeVector = function() {
  119.     return this._shakeVector;
  120. };

  121. var _aries_p001l_gameScreen_updateShake = Game_Screen.prototype.updateShake;
  122. Game_Screen.prototype.updateShake = function() {
  123.     switch (Aries.P001L_SSE.ShakeType) {
  124.         case 0:
  125.             _aries_p001l_gameScreen_updateShake.call(this);
  126.             break;
  127.         case 1:
  128.             this.updateShakeRandom();
  129.             break;
  130.         case 2:
  131.             this.updateShakeOscillate(1, 0);
  132.             break;
  133.         case 3:
  134.             this.updateShakeOscillate(0, 1);
  135.             break;
  136.         default:
  137.             _aries_p001l_gameScreen_updateShake.call(this);
  138.     }
  139. };

  140. Game_Screen.prototype.updateShakeRandom = function() {
  141.     if (this._shakeDuration > 0 || this._shake !== 0) {
  142.         var shakeX = (Math.randomInt(this._shakePower) - Math.randomInt(this._shakePower)) * (Math.min(this._shakeDuration, 30) * 0.5);
  143.         var shakeY = (Math.randomInt(this._shakePower) - Math.randomInt(this._shakePower)) * (Math.min(this._shakeDuration, 30) * 0.5);
  144.         var delta = (this._shakePower * this._shakeSpeed * this._shakeDirection) / (11 - this._shakeSpeed);
  145.         if (this._shakeDuration <= 1) {
  146.             this._shake = 0;
  147.             this._shakeVector.x = 0;
  148.             this._shakeVector.y = 0;
  149.         } else {
  150.             this._shake = 0;
  151.             this._shakeVector.x = shakeX;
  152.             this._shakeVector.y = shakeY;
  153.         }
  154.         this._shakeDuration--;
  155.     }
  156. };

  157. Game_Screen.prototype.updateShakeOscillate = function(h, v) {
  158.     if (this._shakeDuration > 0 || this._shake !== 0) {
  159.         var delta = (this._shakePower * (2 * this._shakeSpeed) * this._shakeDirection) / 5;
  160.         if (this._shakeDuration <= 1 && this._shake * (this._shake + delta) < 0) {
  161.             this._shake = 0;
  162.         } else {
  163.             this._shake += delta;
  164.         }
  165.         if (this._shake > this._shakePower * 2) {
  166.             this._shakeDirection = -1;
  167.         }
  168.         if (this._shake < - this._shakePower * 2) {
  169.             this._shakeDirection = 1;
  170.         }
  171.         this._shakePower *= 0.9;
  172.         this._shakeDuration--;
  173.     }
  174. };

  175. Spriteset_Base.prototype.updatePosition = function() {
  176.     var screen = $gameScreen;
  177.     var scale = screen.zoomScale();
  178.     this.scale.x = scale;
  179.     this.scale.y = scale;
  180.     this.x = Math.round(-screen.zoomX() * (scale - 1));
  181.     this.y = Math.round(-screen.zoomY() * (scale - 1));
  182.     switch (Aries.P001L_SSE.ShakeType) {
  183.         case 0: // default
  184.             this.x += Math.round(screen.shake());
  185.             break;
  186.         case 1: // alldir
  187.             this.x += Math.round(screen._shakeVector.x);
  188.             this.y += Math.round(screen._shakeVector.y);
  189.             break;
  190.         case 2: // horiz
  191.             this.x += Math.round(screen.shake());
  192.             break;
  193.         case 3: // vert
  194.             this.y += Math.round(screen.shake());
  195.             break;
  196.         default: // default!
  197.             this.x += Math.round(screen.shake());
  198.     }
  199. };
复制代码
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5374
在线时间
532 小时
注册时间
2017-9-28
帖子
154
3
发表于 2023-4-10 11:32:05 | 只看该作者
把战斗序列3关了,试试。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
298
在线时间
31 小时
注册时间
2023-1-24
帖子
19
4
 楼主| 发表于 2023-4-11 01:38:31 | 只看该作者
中华国哥 发表于 2023-4-10 11:32
把战斗序列3关了,试试。

解决了,谢谢大佬
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
298
在线时间
31 小时
注册时间
2023-1-24
帖子
19
5
 楼主| 发表于 2023-4-11 01:40:28 | 只看该作者

保存了,谢谢大佬!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 11:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表