门牙遮盖

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

我试图理解 Incisor 中的掩蔽,但在简单的概念验证中遇到了问题。我有两个白盒 GraphicObjects,想要一个遮盖另一个。

这是我所做的: 创建了两个白盒图形对象。 相对于底部框移动了顶部框 (-40, -40)。 将 makeMasker() 函数应用于顶部框以使其成为遮罩。 但是,当我运行代码时,我只看到顶部的白框。我预计底部框的左下角会被顶部框遮住,但这并没有发生。

相关代码如下:

class ProjectMain {

    init() {
        this.whiteBox = new GraphicObject( nc.graphicAssets.WhiteBox, nc.mainScene, "WhiteBox" );

        this.masker = new GraphicObject( nc.graphicAssets.WhiteBox, nc.mainScene, "Masker" );
        this.masker.position.x = -40;
        this.masker.position.y = -40;
        this.masker.makeMasker( nc.masks.MainMask );
    }
}

任何人都可以指出我在屏蔽过程中可能遗漏或做错了什么吗?

javascript game-development masking incisor
1个回答
0
投票

谢谢你的提问!你很接近。

为了让遮罩器正确遮盖白盒,您需要使白盒本身“遮盖”。为此,请添加以下代码行:

this.whiteBox.makeMasked(nc.masks.MainMask);

这将显示白色框的左下角。

为什么这是必要的?

默认情况下,遮罩仅显示被遮罩的内容——本质上是被遮罩覆盖的部分。但是,如果您希望蒙版隐藏其覆盖的区域,从而显示对象的剩余可见区域(在本例中为白色框),您可以反转蒙版

为此,请将可选的

invertMask
参数作为
true
传递给
makeMasked()
函数:

this.whiteBox.makeMasked(nc.masks.MainMask, true); // true = invert mask, show what is NOT covered

说明:

第一个版本(

makeMasked(nc.masks.MainMask)
)将仅显示被遮罩覆盖的白框部分。 第二个版本 (
makeMasked(nc.masks.MainMask, true)
) 反转蒙版,使蒙版外部的区域可见,蒙版内部的区域隐藏。

如果您需要进一步说明,请告诉我!

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