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

Project1

 找回密码
 注册会员
搜索

问一下mv里面如何使用代码触发手柄震动效果

查看数: 2461 | 评论数: 10 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-1-22 09:33

正文摘要:

问一下mv里面如何使用代码触发手柄震动效果

回复

river12 发表于 2023-3-7 21:34:43
lqi991 发表于 2023-3-3 12:59
代码已修改
添加了判断变量值不等于0就归0

nice
lqi991 发表于 2023-3-3 12:59:12
river12 发表于 2023-3-2 18:42
可以震动,但是变量是0的话,好像一直会刷新地图。有解决方法吗


代码已修改
添加了判断变量值不等于0就归0
river12 发表于 2023-3-2 18:42:22
lqi991 发表于 2023-2-21 00:28
# 找个JS复制进去即可. (修改了:Input._pollGamepads)
# 设置变量ID,给变量值即可执行 (1000相当于1秒)
#  ...

可以震动,但是变量是0的话,好像一直会刷新地图。有解决方法吗
347780682 发表于 2023-2-23 22:51:51
lqi991 发表于 2023-2-22 16:04
# MV自带的浏览器版本过低了,小问题不少,MZ版本倒可以解决这个问题.

# 方法1: 把 MZ 的浏览器复制给 MV

谢谢你的帮助,不过我电脑昨天刚刚坏掉了,可能要过几天才能试了
347780682 发表于 2023-2-21 20:29:34
lqi991 发表于 2023-2-21 00:28
# 找个JS复制进去即可. (修改了:Input._pollGamepads)
# 设置变量ID,给变量值即可执行 (1000相当于1秒)
#  ...

你好 我的手柄是仿360 其他游戏都是可以震动的,但是测试这段代码的时候少了.vibrationActuator所以无法执行,楼下上图
lqi991 发表于 2023-2-21 00:28:26
本帖最后由 lqi991 于 2023-3-3 12:55 编辑

# 找个JS复制进去即可. (修改了:Input._pollGamepads)
# 设置变量ID,给变量值即可执行 (1000相当于1秒)
# 测试需兼容 xbox360 的手柄有效果

  1. Input.手柄震动 = function (d, p) {
  2.     if (!$gameVariables) return;
  3.     if (d && d.connected) d = d.vibrationActuator;
  4.     else d = null;
  5.     const id = 1,  // 变量ID
  6.         s = $gameVariables.value(id) || 0;
  7.     if (d&&s) {
  8.         d.playEffect('dual-rumble', {
  9.             startDelay: 0,
  10.             duration: s,
  11.             strongMagnitude:1.0,
  12.             weakMagnitude: 1.0,
  13.         });
  14.     }
  15.     if (!p&&s) $gameVariables.setValue(id, 0);
  16. };

  17. Input._pollGamepads = function () {
  18.     if (navigator.getGamepads) {
  19.         var gamepads = navigator.getGamepads();
  20.         if (gamepads) {
  21.             for (var i = 0; i < gamepads.length; i++) {
  22.                 var gamepad = gamepads[i];
  23.                 Input.手柄震动(gamepad, gamepads[i + 1]);
  24.                 if (gamepad && gamepad.connected) {
  25.                     this._updateGamepadState(gamepad);
  26.                 }
  27.             }
  28.         }
  29.     }
  30. };
复制代码
347780682 发表于 2023-1-22 14:00:47
KB.Driver 发表于 2023-1-22 13:08
function vibrate(duration) {
  let gamepads = navigator.getGamepads ? navigator.getGamepads() : (nav ...

试了下用不了,不过还是感谢
KB.Driver 发表于 2023-1-22 13:08:37
JAVASCRIPT 代码复制
  1. function vibrate(duration) {
  2.   let gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : [])
  3.   [...gamepads].find(x=>x).vibrationActuator.playEffect('dual-rumble', {
  4.     startDelay: 0,
  5.     duration: duration,
  6.     weakMagnitude: 1,
  7.     strongMagnitude: 1,
  8.   })
  9. }


参考:https://github.com/encoderpie/gamepad-api-test/blob/f913109bd1db382a6bf893047bbc360936cd6a01/gamepad.js

这是一段在chrome浏览器能跑的代码,但是MV本身的内核版本似乎不支持。
如果魔改MV使用的浏览器,似乎能实现效果,不过还是等楼下大神补充吧。
lqi991 发表于 2023-1-22 09:33:46
本帖最后由 lqi991 于 2023-2-23 20:00 编辑
347780682 发表于 2023-2-21 20:31
mv里面检查也是Xbox 360的,就是少了图里那段代码 所以震动才无法继续,我玩其他游戏的时候我的手柄都是 ...


# MV自带的浏览器版本过低了,小问题不少,MZ版本倒可以解决这个问题.

# 方法1: 把 MZ 的浏览器复制给 MV

# 方法2:
  1.在下面网盘中下载新浏览器.
    编辑器使用: nwjs-win-test.zip
    部署WIN版使用: nwjs-win.zip
  2.打开编辑器目录,解压到目录即可(建议:把原来的删除或改名,再解压)
  3.如果窗口不居中?打开项目的配置文档 package.json
    在 window 对象内 添加 "position": "center"
    参考如下:
   
  1. {
  2.     "name": "",
  3.     "main": "index.html",
  4.     "js-flags": "--expose-gc",
  5.   "window": {
  6.     "title": "",
  7.     "toolbar": false,
  8.     "width": 816,
  9.     "height": 624,
  10.     "position": "center",
  11.     "icon": "icon/icon.png"
  12.   }
  13. }
复制代码


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

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

GMT+8, 2025-3-4 01:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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