cocoscreator怎样做一个多边形的遮罩?

各位大佬,我想做一个切割小游戏,虽然现在物理的切割已经完成了,但是纹理的切割我却还是弄不好。在网上找了下说用mask,但是它只能切割成方形和圆形以及一个纹理什么的,达不到我想要的切割成多边形的效果。就比如这张图,左上角是我切割下来了的部分,我不知道怎样去将这部分进行隐藏。还有就是 cocoscreator是不是没有cc.ClippingNode组件,我在代码里var clipnode = new cc.ClippingNode();,就会报cc.ClippingNode is not a constructor的错误。感谢各位大佬,比较急。

好像这样只能去研究shader了

大佬,我没使用过shader,请问有啥地方是可以相当于我去完成我这个任务的入口学习的地方么?因为现在急着把这个问题解决

每个版本自定义遮罩都不一样。。2.0.2正式版可以这么写:

// this.mask是遮罩组件,遮罩类型须是矩形或椭圆,不能是纹理,其它属性随意,会被下面函数改写。
this.mask._updateGraphics = () => {
    var graphics = this.mask._graphics;
    graphics.clear();
    // 下面用cc.Graphics绘制你的多边形并fill
    graphics.lineTo...
};
this.mask._updateGraphics();

大佬 我是这样写的 为什么没有作用呀

大佬能教下我么

大佬 我的是2.01的,这样写是不是不行

不是说了每个版本不一样吗?你试试2.0.2。2.0.1比较复杂

上面打错了,不是stroke,是fill。然后最后再调用一次this.mask._updateGraphics();

1赞

我把版本改成2.0.2了 代码是这样写的


但是它还是有问题 还是一个50*50的方形 我是不是哪里写错啦

大佬帮我看一下

CustomMask.zip (487.4 KB)

大佬 是这样的 我把你教给我的这个方法 在cocoscreator里加入到节点,它的绘图是有作用的。就是能汇成代码里所说的图形,但是,我在代码里创建一个节点,让它绑定这个ts脚本,它的绘图又没有作用了。脚本里我是这么写的

  1. 你这个关键的问题是,cc.Mask遮罩的是它所在节点的子节点,你新建的maskNode添加到场景上后,还要把要遮罩的节点放到maskNode下面去。
  2. 不需要跨脚本调用那么麻烦,直接对newMask做那些操作就行了,TS和JS都一样的。TS在Creator里也是编译成JS后再执行的。

是这样 我在这个遮罩的节点下面添加了一个节点,并且给这个节点赋上了一个纹理。您看一下我现在发的截图


此时这个预制体下没有任何子节点

此时已经向这个预制体下加入了子节点,而且把预制体加入进了场景

它的结果就是 那个预制体的那个节点的遮罩的重新绘制没有作用

有可能你遮罩绘制的位置和纹理的位置对不上。把this.mask.inverted = true去掉看看有没有变化。不行就发一个demo看看。

那个设置了后有变化

UItraSharp.rar (1.1 MB)

您看一下