Project1

标题: 关于RPGMV中如何停止玩家在地图上移动但是不影响其他交互 [打印本页]

作者: 2669483303    时间: 2023-4-17 23:42
标题: 关于RPGMV中如何停止玩家在地图上移动但是不影响其他交互
试过YEP的插件限制移动结果无法跟事件交互解除限制,把移动速度调成0也只是把速度变慢了并不是不移动,有没有其他插件或者脚本限制玩家移动
作者: Drill_up    时间: 2023-4-17 23:42
用 输入设备核心 插件

作者: 余杭    时间: 2023-4-18 00:05
你这个停止移动后的其他交互是指啥
作者: bleen    时间: 2023-4-18 00:28
的确,YEP那个限制移动插件会影响交互,但是插件本身根本没提到。之前我做一个走格子的小游戏,也不允许玩家移动,只能看点数来走动,也遇到同样的问题。

我想了一个“模拟”的办法。因为我的情况是玩家必须在指定的位置才能触发这个需要,所以在那个位置建了一个初始状态是透明的事件。触发的时候,让玩家透明化并且瞬移到无法动弹的地形里面卡着,同时事件切换到图像和玩家一模一样的状态,完成‘“狸猫换太子”。因为事件本身就有固定属性,不需要再限制,玩家以为操作的还是角色,其实是外表一样的事件。需要解除状态的时候,检测事件当前的坐标,再把那个卡住的透明玩家瞬移回来,解除透明,然后把事件透明化,完成再次互换。

因为不知道你限制移动是为了实现什么效果,所以我只是说说我自己的经历。我也跟着蹲一下看有没有大佬提供更好的插件或者方案
作者: cenhangkai    时间: 2023-4-18 06:08
  1. //请输入开关ID,用来控制玩家是否禁止动弹
  2. var KGid = 1;


  3. //玩家禁止动弹时,玩家无法动弹
  4. var _JDGame_Player_updateMove = Game_Player.prototype.updateMove;
  5. Game_Player.prototype.updateMove = function() {
  6.         if ($gameSwitches.value(KGid)) this.setPosition(this._realX,this._realY);
  7.         _JDGame_Player_updateMove.call(this);
  8. };

  9. //玩家禁止动弹时,玩家无法转向(不需要就删除这一整段代码)
  10. var _JDGame_Player_setDirection = Game_Player.prototype.setDirection;
  11. Game_Player.prototype.setDirection = function(d) {
  12.         if ($gameSwitches.value(KGid)) return;
  13.         _JDGame_Player_setDirection.call(this,d);
  14. };

  15. //玩家禁止动弹时,无法主动接触事件触发(不需要就删除这一整段代码)
  16. var _JDGame_Event_start = Game_Event.prototype.start;
  17. Game_Event.prototype.start = function() {
  18.         if ($gameSwitches.value(KGid)) return;
  19.         _JDGame_Event_start.call(this);
  20. };

  21. //玩家禁止动弹时,无法打开菜单(不需要就删除这一整段代码)
  22. var _JDScene_Map_isMenuEnabled = Scene_Map.prototype.isMenuEnabled;
  23. Scene_Map.prototype.isMenuEnabled = function() {
  24.         return _JDScene_Map_isMenuEnabled.call(this) && !$gameSwitches.value(KGid);
  25. };
复制代码


【使用说明】
·将上述代码复制粘贴至任意插件最下面;
·开关ID请自定义,默认就是1号开关,用来控制禁止动弹;
·不需要的功能可以自行删除对应代码。

————————
????????随手写的,希望对楼主有所帮助。
作者: 是阿浪啊    时间: 2023-4-18 09:10
水水更健康。
作者: 2669483303    时间: 2023-4-18 15:05
cenhangkai 发表于 2023-4-18 06:08
【使用说明】
·将上述代码复制粘贴至任意插件最下面;
·开关ID请自定义,默认就是1号开关,用来控制禁 ...

没生效呢,还是能动
作者: 2669483303    时间: 2023-4-18 15:29
bleen 发表于 2023-4-18 00:28
的确,YEP那个限制移动插件会影响交互,但是插件本身根本没提到。之前我做一个走格子的小游戏,也不允许玩 ...

我也是做这种点数移动的功能,类似英雄无敌那种
作者: cenhangkai    时间: 2023-4-18 16:54
2669483303 发表于 2023-4-18 15:05
没生效呢,还是能动

没弄开关?我这能禁

作者: 2669483303    时间: 2023-4-18 18:24
cenhangkai 发表于 2023-4-18 16:54
没弄开关?我这能禁

忘了开关了,仔细看了下,这串代码应该是用开关判定然后把玩家位置刷新在原位表现出不移动的形式,因为虽然位置没动,但是我设计的移动点数还是在消耗
作者: cenhangkai    时间: 2023-4-18 18:31
2669483303 发表于 2023-4-18 18:24
忘了开关了,仔细看了下,这串代码应该是用开关判定然后把玩家位置刷新在原位表现出不移动的形式,因为虽 ...
  1. //请输入开关ID,用来控制玩家是否禁止动弹
  2. var KGid = 1;


  3. //玩家禁止动弹时,玩家无法动弹
  4. var _JDGame_Player_updateMove = Game_Player.prototype.updateMove;
  5. Game_Player.prototype.updateMove = function() {
  6.         if ($gameSwitches.value(KGid)) return;
  7.         _JDGame_Player_updateMove.call(this);
  8. };
  9. //玩家禁止动弹时,屏蔽鼠标点地移动
  10. var _JDGame_Temp_setDestination = Game_Temp.prototype.setDestination;
  11. Game_Temp.prototype.setDestination = function(x, y) {
  12.         if ($gameSwitches.value(KGid)) return;
  13.         return _JDGame_Temp_setDestination.call(this,x,y);
  14. };

  15. //玩家禁止动弹时,玩家无法转向(不需要就删除这一整段代码)
  16. var _JDGame_Player_setDirection = Game_Player.prototype.setDirection;
  17. Game_Player.prototype.setDirection = function(d) {
  18.         if ($gameSwitches.value(KGid)) return;
  19.         _JDGame_Player_setDirection.call(this,d);
  20. };

  21. //玩家禁止动弹时,无法主动接触事件触发(不需要就删除这一整段代码)
  22. var _JDGame_Event_start = Game_Event.prototype.start;
  23. Game_Event.prototype.start = function() {
  24.         if ($gameSwitches.value(KGid)) return;
  25.         _JDGame_Event_start.call(this);
  26. };

  27. //玩家禁止动弹时,无法打开菜单(不需要就删除这一整段代码)
  28. var _JDScene_Map_isMenuEnabled = Scene_Map.prototype.isMenuEnabled;
  29. Scene_Map.prototype.isMenuEnabled = function() {
  30.         return _JDScene_Map_isMenuEnabled.call(this) && !$gameSwitches.value(KGid);
  31. };
复制代码


稍微改了下,这样就不会触发你的移动点数了。
作者: 2669483303    时间: 2023-4-18 18:54
cenhangkai 发表于 2023-4-18 18:31
稍微改了下,这样就不会触发你的移动点数了。

可行,就是有点小毛病,虽然不移动位置了但是行走图还在循环




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