【问题标题】:How to check if the mouse is over a gameObject in phaser 3?如何检查鼠标是否在移相器 3 中的游戏对象上?
【发布时间】:2022-03-12 23:24:14
【问题描述】:

我有一个游戏对象(特别是一个矩形)。我只想在鼠标悬停在矩形上时显示跟随鼠标的文本。

我尝试使用rectangle.on('pointover', function(pointer) {...}) 侦听器,但这只会捕获初始鼠标悬停事件。它不会连续触发以允许文本跟随鼠标。

我认为我的 update() 方法中需要一些东西,例如:

if (rectangle.onPointerOver()) {
   update text x and y from pointer
}

但我在GameObjectRectangle 上没有看到任何此类方法。

我也知道我可以天真地找到矩形的 x 和 y 坐标以及长度和宽度,并根据指针检查,但 Phaser 3 必须有更好的方法。

【问题讨论】:

    标签: phaser-framework


    【解决方案1】:

    事实证明,添加监听器是正确的方法,但我应该监听的事件是.on('pointermove', function(pointer, x, y, event) {})

    【讨论】:

      【解决方案2】:

      我在这里聚会肯定迟到了。只是想为以后发现此内容的任何人填写一些详细信息!

      您绝对可以在创建矩形时使用pointerover 事件,就像任何其他游戏对象一样。 您只需要确保首先在游戏对象上调用 setInteractive()。

      const rect = this.add.rectangle(200, 200, 148, 148, 0x6666ff);
      rect.setInteractive()
      rect.on("pointerover", () => {
          rect.setStrokeStyle(4, 0xefc53f);
      });
      

      另外,供将来参考:

      我在文档中找不到可用输入事件的完整列表,但它们在 git repo 中。

      https://github.com/photonstorm/phaser/blob/master/src/input/events/index.js

      祝你好运?

      【讨论】:

        【解决方案3】:

        我用过这样的东西:

        gameObject.setInteractive().on('pointerdown', function(pointer, localX, localY, event){
            // ...
        });
        

        我不知道如何将其更改为悬停,但也许这对某人有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多