如何检查鼠标是否在移相器 3 中的游戏对象上?

How to check if the mouse is over a gameObject in phaser 3?

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

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

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

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

但是我在 GameObject or Rectangle 上没有看到任何这样的方法。

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

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

我用过这样的东西:

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

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

我肯定迟到了。只是想为以后找到它的任何人填写一些详细信息!

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

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

另外,供以后参考:

我无法在文档中找到可用输入事件的完整列表,但它们在 git 存储库中。

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

祝你好运