在 Phaser 中反转 y 轴

问题描述 投票:0回答:3

我正在制作一款两人棋盘游戏。 我想从当前玩家的角度显示棋盘。 因此,如果我是棋盘“底部”的玩家,我想反转 y 轴并将原点移动到画布的左下角。 如果鼠标点击也能改变就好了。 我只想影响精灵的位置,而不是它们的旋转——我总是希望它们指向上方。 我没有看到用 Phaser 来做到这一点的简单方法。 有吗

我尝试执行

world.scale.setTo(1, -1)
,然后执行
world.y = -world.height
,但修改
world.y
似乎没有做任何事情。

phaser-framework
3个回答
2
投票

我有一个类似的问题,没有看到任何令人满意的答案,但是通过查看源代码,我想出了这段代码,并将其粘贴在我的

create
函数中:

game.world.transformCallback = function(worldTransform) {
  worldTransform.d  = -1;
  worldTransform.ty = game.height;
};

我不知道这是否会弄乱一些事情,但它似乎适用于我的初步测试。我确实看到传递到

x
y
drawRect()
值现在用于矩形的 左下,而不是左上角。这是有道理的,但需要注意。 :-)

编辑:看起来文本也被颠倒了。 :-/


1
投票

不是直接移相器功能,但我建议您以与移相器相同的方式运行游戏内世界坐标,并简单地交换显示坐标,因此不要将棋盘游戏棋子放置在说

queen.position.set( 10, 10 );

将会是

queen.position.set( 10, worldHeight - 10 );

从这里开始,围绕精灵的放置构建一个包装器,以便它了解镜像:

placePiece( sprite, x, y, direction );

在这个函数中,检查方向以查看坐标是否应该翻转。


0
投票

这真的很棒 this.cameras.main.setZoom(-1);然后使用 sprite.setFlipY(true) 和 this.cameras.setOrigin(无论你想要什么原点)

© www.soinside.com 2019 - 2024. All rights reserved.