0

不知何故,我在 AnimatedSprite 帧的顶部得到了一个额外的小工件。我很确定它是上面包装的精灵的底部。我认为我的精灵表 PNG 已关闭,所以我使用 TexturePacker 分解并重新组装精灵表。虽然我使用的 spritesheet JSON 与 TexturePacker 生成的不一样,但坐标匹配。我什至尝试用纹理打包器版本中的内容替换一些帧。

这是最后一帧的 JSON 删节——顶部有一条虚线:

{
    "meta": {
        "image": "slime3.png",
        "size": {"w":288,"h":160},
        "scale": "1"
    },
    "frames": {
        "slime_pink_die_1": {
            "frame": {"x":256,"y":128,"w":32,"h":32},
            "rotated": false,
            "trimmed": false,
            "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
            "sourceSize": {"w":32,"h":32}
        }
    }
}

这是它的加载方式:

        const slimecolors = ['pink'];
        const slimeActions = [{name:'die',frames:1}];
        slimecolors.forEach(slimeColor => {
            const slimeActionTextures = [];
            slimeActions.forEach(action => {
                const actionTextures = [];
                for (let j = 0; j < action.frames; j++) {
                    const texture = Texture.from(`slime_${slimeColor}_${action.name}_${j + 1}`);
                    actionTextures.push(texture);
                }
                slimeActionTextures.push(actionTextures);
            });

            const slime = new AnimatedSprite(slimeActionTextures[0]);
            slime.actions = slimeActionTextures;
            slime.x = (this.screen.width-128) * Math.random() + 64;
            slime.y = (this.screen.height-128) * Math.random() + 64;
            slime.dx = 2 * Math.random() * Math.sign(Math.random() - 0.5);
            slime.dy = 2 * Math.random() * Math.sign(Math.random() - 0.5);
            slime.scale.set(1 + (2 * Math.random()));
            slime.animationSpeed = 0.25;
            slime.gotoAndPlay(Math.random() * 4);
            this.slimes.push(slime);
            this.stage.addChild(this.slimes.slice(-1)[0]);
        });

(这里PIXI.Application 的一个实例)。

顶行的精灵没有这个神器,这就是我重新打包的原因。

4

0 回答 0