• Phaser Matter Collision Plugin 碰撞插件 -- iFiero技术分享


    collision-simple-demo

    collision-simple-demo

    Phaser 自带的Arcade虽然易用,但复杂的物理碰撞明显就不够用了,于是Matter等物理引擎还是不得不学的,以下是Matter物理体碰撞的一个插件,它省去了我们判别两个物理体相撞后哪个是gameObjectA和gameObjectB,实在是好用又省心,特推荐如下:

    引入插件:

    const config = {
      // ...
      physics: {
        default: "matter"
      },
      // Install the scene plugin
      plugins: {
        scene: [
          {
            plugin: PhaserMatterCollisionPlugin, // The plugin class
            key: "matterCollision", // Where to store in Scene.Systems, e.g. scene.sys.matterCollision
            mapping: "matterCollision" // Where to store in the Scene, e.g. scene.matterCollision
          }
        ]
      }
    };
     
    const game = new Phaser.Game(config);
    

    识别二个相撞体

    const player = this.matter.add.sprite(0, 0, "player");
    const trapDoor = this.matter.add.image(200, 0, "door");
     
    this.matterCollision.addOnCollideStart({
      objectA: player,
      objectB: trapDoor,
      callback: function(eventData) {
        // This function will be invoked any time the player and trap door collide
        const { bodyA, bodyB, gameObjectA, gameObjectB, pair } = eventData;
        // bodyA & bodyB are the Matter bodies of the player and door respectively
        // gameObjectA & gameObjectB are the player and door respectively
        // pair is the raw Matter pair data
      },
      context: this // Context to apply to the callback function
    });
    

    传感器

    const player = this.matter.add.sprite(0, 0, "player");
    const sensor = this.matter.world.add.rectangle(100, 0, 50, 50, { isStatic: true, isSensor: true });
     
    this.matterCollision.addOnCollideStart({
      objectA: player,
      objectB: sensor,
      callback: eventData => console.log("Player touched hidden sensor")
    });
    

    Matter:http://brm.io/matter-js/
    插件:https://www.npmjs.com/package/phaser-matter-collision-plugin
    更多游戏教学:www.iFIERO.com -- 为游戏开发深感自豪

  • 相关阅读:
    二叉树基本操作(二)
    二叉树基本操作(一)
    数组的方式实现--栈 数制转换
    数据的插入与删除
    链表 创建 插入 删除 查找 合并
    ACM3 求最值
    ACM2 斐波那契数列
    ACM_1 大数求和
    简单二维码生成及解码代码:
    ORM中去除反射,添加Expression
  • 原文地址:https://www.cnblogs.com/apiapia/p/10113761.html
Copyright © 2020-2023  润新知