【发布时间】:2022-11-30 18:15:10
【问题描述】:
我正在尝试创建一个带有背景、球体阴影和遮罩的行星,在 Phaser 2 中实现它非常简单,但现在它对我来说有很多棘手的部分
更新容器的掩码属性后,根本不会显示任何内容。我已经尝试了几个 Masks 组,但无法成功...
换句话说:我需要使用圆形蒙版将矩形背景“放入”球体内部
我究竟做错了什么?还有其他更好的方法吗?
所以这是我使用的方法:
init({ x, y, size, sprite, id }) {
const container = this.scene.add.container(x, y);
const width = (1200 / 300) * 200;
const height = 200;
const earthBMD = this.scene.textures.createCanvas(`earthBMD${id}`, width, height);
earthBMD.draw(0, 0, this.scene.textures.get(`map-${size}-${sprite}`).getSourceImage());
const planet = this.scene.add.sprite(0, 0, earthBMD).setOrigin(0.5).setAngle(-15);
const shadow = this.scene.add.sprite(0, 0, 'sphere').setOrigin(0.5, 0.5).setScale(0.5);
const mask = this.scene.make.graphics(0, 0).fillStyle(1000000, 0.5).fillCircle(0, 0, 150);
container.add([planet, mask, shadow]);
container.mask = new Phaser.Display.Masks.GeometryMask(this.scene, mask);
return container;
}
【问题讨论】:
标签: javascript canvas phaser-framework pixi.js