美文网首页
nipplejs虚拟摇杆

nipplejs虚拟摇杆

作者: 说来有点可笑 | 来源:发表于2019-11-26 16:55 被阅读0次

Game Start

- -

<center> (不忍直视的名字和logo_(:з」∠)_)</center>

使用

创建 manager

在引入js后,我们按照官网的代码先创建manager实例。manager的dom元素就是所有nipple对象能生成的区域块。

 let joyCon = document.querySelector("#joy-con");
      // eslint-disable-next-line no-debugger
      let options = {
        mode: "static",// 'dynamic', 'static' or 'semi'
        size: 150,
        position: {
          left: "50%",
          top: "50%" 
        },//在容器内垂直居中显示
        zone: joyCon //如果不提提供zone容器元素,那么默认动态生成的元素是注入在body中的。
      };
      let manager = nipplejs.create(options);

由于摇杆对象(nipple)默认是白色的所以需要给背景填充颜色,效果如图。

好大一个...

🎮有三种模式:

1.dynamic(离开屏幕后就消失)

2.semi(离开屏幕后还保留在原处,移动到别处时切换当前的摇杆的位置)

3.static 固定不动

自定义样式

image

通过审查元素可发现动态生成的nipple元素中有两个div,front是中间的圆点,back是圆点的容器。

.front {
    background-color: #fff;
    user-select: none;//加这个属性是因为元素总是会被选中,会比较影响使用体验
  }

  .back {
    background-image: url("../assets/j.png");
    background-size: cover;
    user-select: none;
  }

如下图所示

image

在文档中介绍了两个实例对象,manager写得很清楚,但是nipple这个实例是真的找了半天都没有找到是怎么生成的...
然后翻到Events这边发现原来这个对象是通过参数传过来的 -。- ,查看了一下源码,在生成manager对象后会创建collect对象,collect在被创建时会根据当前mode处理不同的情况,当mode为static时需要默认生一个nipple对象。

image

监听事件

//滑动摇杆的事件
   manager.on("move", function (evt, data) {
        if (data.direction) {
            ......
      });
      
//停止滑动摇杆的事件 
      manager.on("end", function (evt, data) {
        ......
      });

我这里只需要两个事件就OK

兼容性

目前 nipplejs: 0.8.3版本在ios13上有bug导致其无法滑动...

https://developer.apple.com/documentation/safari_release_notes/safari_13_release_notes

原因是新发布的safari 13增加了新的API


image

可对源码进行修改,找到依赖下的utils.js

export const isPressed = (evt) => {
    if (evt.type === 'pointerdown' || evt.type === 'pointermove') {
        return true;
    } //补充该代码
    if (isNaN(evt.buttons)) {
        return evt.pressure !== 0;
    }
    return evt.buttons !== 0;
};

或者回退到0.8.1版本也可以解决问题...

参考资料

( ˘▽˘)っ链接

相关文章

  • nipplejs虚拟摇杆

    JavaScript实现虚拟摇杆 https://yoannmoi.net/nipplejs/

  • nipplejs虚拟摇杆

    Game Start (不忍直视的名字和logo_(:з」∠)_) 使用 创建 manager 在引入js后,我们...

  • nippleJS 源码解析

    nippleJs是什么? ?nippleJs是一个虚拟摇杆的js库,专为可触摸的设备提供接口,常被用于游戏和可操作...

  • JavaScript虚拟摇杆实践

    6~7月的一个小任务是实现一个虚拟摇杆控制无人机,在github搜一下发现有一个# nipplejs,用它可以快速...

  • 虚拟摇杆

  • Swift 虚拟摇杆

    Swift 虚拟摇杆网上能找到的摇杆都是oc或者cocos2dx,在swift项目里用着很不方便.自写了一个swi...

  • 虚拟键盘的方位映射到游戏世界空间的计算

    设当前虚拟摇杆传过来的纵轴值为ver,横轴值为hor,实际的虚拟摇杆的当前方位应该为两坐标轴的向量相加: 即 这个...

  • 自定义虚拟摇杆组件让你一劳永逸

    最近在研究虚拟摇杆实现方式的时候,发现网上的教程的实现方式可移植性并不是特别好,于是我决定自己实现一个虚拟摇杆组件...

  • 大疆开发最新问题2018-01-22

    问题:在大疆提供的虚拟机模拟器上面运行模拟飞机飞行,虚拟摇杆飞行了一段时间之后软件控制就会失效,此时摇杆会是好用的...

  • Jtro的技术分享:ugui做虚拟摇杆

    hi:大家好 这里给大家不用easytouch做摇杆的方法,其实做虚拟摇杆还是easytouch简单方便一点,只需...

网友评论

      本文标题:nipplejs虚拟摇杆

      本文链接:https://www.haomeiwen.com/subject/iqlywctx.html