gpt4 book ai didi

phaser-framework - 试图在 Phaser 中获得鼠标滚轮缩放效果

转载 作者:行者123 更新时间:2023-12-04 15:22:52 25 4
gpt4 key购买 nike

使用鼠标滚轮放大和缩小似乎有效。但是我想将鼠标位置扔到混音中。

如果用户放大,相机会(最好是缓慢的,但也可以立即工作)在放大或缩小时向鼠标位置移动。换句话说,在缩放时,相机应该以当前鼠标的 x、y 坐标为中心,或者至少转向它。

相机 x,y 不等于 Canvas x,y 吗?它似乎向相反的方向平移。我在我的 [Typescript] create() 方法中尝试了 pan()centerOn():

this.input.on("wheel",  (pointer, gameObjects, deltaX, deltaY, deltaZ) => {

if (deltaY > 0) {
this.camera.zoom -= .1;
}

if (deltaY < 0) {
this.camera.zoom += .1;
}

this.camera.pan(pointer.x, point.y, 2000, "Power2");

//this.camera.centerOn(pointer.x, pointer.y);

});

这是一个远射,但我想模仿游戏中的缩放行为 Distant Worlds .

最佳答案

对于 OP 来说为时已晚,但可能对其他人有用。我找到了一种让相机以类似于 Distant Worlds 等游戏的方式工作的方法。

     this.input.on("wheel",  (pointer, gameObjects, deltaX, deltaY, deltaZ) => {

if (deltaY > 0) {
var newZoom = this.camera.zoom -.1;
if (newZoom > 0.3) {
this.camera.zoom = newZoom;
}
}

if (deltaY < 0) {
var newZoom = this.camera.zoom +.1;
if (newZoom < 1.3) {
this.camera.zoom = newZoom;
}
}

// this.camera.centerOn(pointer.worldX, pointer.worldY);
// this.camera.pan(pointer.worldX, pointer.worldY, 2000, "Power2");

});

this.input.on('pointermove', (pointer) => {
if (!pointer.isDown) return;

this.camera.scrollX -= (pointer.x - pointer.prevPosition.x) / this.camera.zoom;
this.camera.scrollY -= (pointer.y - pointer.prevPosition.y) / this.camera.zoom;
});

关于phaser-framework - 试图在 Phaser 中获得鼠标滚轮缩放效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62947381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com