Phaser 3:无需物理即可更改精灵的“Hitbox”/交互区域

ale*_*lex 5 javascript phaser-framework

我正在创建的游戏不需要任何物理原理,但是当您将鼠标悬停在/单击精灵上时,您可以使用sprite.setInteractive({cursor: "pointer"});sprite.on('pointermove', function(activePointer) {...});等进行交互。但是我注意到两个问题:

  1. 精灵有一些透明的区域。点击那些透明区域时,交互功能仍然会触发,这是不理想的。

  2. 当播放精灵动画时,交互区域似乎没有完全(根本?)改变,因此如果精灵在比前一个更大的帧上结束,最终会出现我无法交互的小区域。

我想到的一个选择是在我的精灵上创建一个多边形,它覆盖了我想要交互的区域。然而,在此之前,我只是想问是否有更简单的方法来解决这些问题。

小智 5

我自己刚才正在尝试寻找这个问题的答案..

Think Make Pixel Perfect 正是您所寻找的。

this.add.sprite(x, y, key).setInteractive(this.input.makePixelPerfect());
Run Code Online (Sandbox Code Playgroud)

https://newdocs.phaser.io/docs/3.54.0/focus/Phaser.Input.InputPlugin-makePixelPerfect