微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 Phaser3 精灵渲染在错误的位置?

如何解决为什么我的 Phaser3 精灵渲染在错误的位置?

我正在尝试使用 Electron 中的 Phaser 进行非常基本的绘图,但得到的结果毫无意义。形状出现了,但位置不对。

我正在尝试在左上角绘制一个 100 像素的正方形。这是所有code from my scene's create method

// note: Phaser.config has { width: 400,height: 200 }

let debugGraphics = new Phaser.GameObjects.Graphics(this,{ x: 0,y: 0 })
debugGraphics.linestyle(1,0x33ff33,1)
debugGraphics.fillStyle(0xff0000,1)

let squarePoints = [
  { x: 1,y: 1 },{ x: 101,y: 101 },{ x: 1,y: 101 } 
]

debugGraphics.strokePoints(squarePoints,true,true)
debugGraphics.fillPoints(squarePoints,true)
debugGraphics.generateTexture('square')

/*
  If these numbers are any lower,the square renders
  partially outside the visible area. At 199,99 the
  1px border disappears along the left and top edges.
*/

this.add.sprite(200,100,'square')

问题在于最后一行:如果我将精灵放在 0,0 处,场景会呈现空白。我只是凭一种预感,想尝试各种价值,直到某些东西变得可见。

我对 Phaser 坐标系的理解是原点在左上角,x 向右增加,y 向下增加。因此,放置在 0,0 处的任何内容都应至少有四分之一可见(取决于其锚点是其中心还是左上角)。我所看到的似乎与对该系统的任何合理解释不一致。

我还注意到,如果我更改 the Phaser config 中的画布尺寸,对象会移动,并且我必须将放置坐标更改为 300,150 - 这恰好是游戏尺寸的一半。这似乎同样错误

我没有对游戏的坐标系应用任何类型的转换。整个“游戏”是一个最小的配置对象,然后是上面的 create 代码。我究竟做错了什么?有没有我可以打开的设置来强制 Phaser 不再愚蠢?


更新:我创建了一个 minimal reproduction repo 来演示该问题。

我还重新标记了它以包含 Electron,因为这似乎是一个相关因素。我准备相信这段代码在浏览器中运行良好,而在 Electron 中运行不佳。我正在寻找可以在 Electron 中解决这个问题的东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。