如何避免一次触发两个重叠物件的事件?
construct2吧
全部回复
仅看楼主
level 11
sppam
楼主
两个物件重叠,并且都有 touch 事件。
现在我点一下,两个事件都会触发。可以只触发一个事件吗?
比如下面这张图,“退出” 按钮 正好挡在“房子”前面了。
我点按钮的时候,点击房子的事件也跟着一起触发了
2014年08月21日 13点08分
1
level 13
詹思圆
也不知道 C2有没有图层优先判定。。
2014年08月21日 13点08分
2
sppam
=。= 我也不太清楚,米有找到。。。我再找找
2014年08月21日 14点08分
level 7
杰夫jeffchen
可以根据需求调整碰撞范围,尽量不要让两者碰撞范围重叠
2014年08月21日 14点08分
3
sppam
我之前也有用这个办法,你看兔子脑袋和房子右下角其实也有点重叠。我就把房子碰撞范围往回缩了点。这次这个按钮重叠的面积太大了
。 如果再缩,没出按钮的时候,点房子就会总没反应,也挺奇怪的。。。
2014年08月21日 14点08分
杰夫jeffchen
回复 sppam :按钮是弹出的吗?如果是则加个变量做条件判断
2014年08月21日 14点08分
level 8
飞天星星小子
想到了一个想法。。。
设定another condition,当touch的方向在between 退出图案的范围的时候
这样就可以判断了。。。
2014年08月21日 14点08分
4
sppam
这个我真没太看懂,touch的方向?
2014年08月21日 14点08分
level 9
rexrainbow
z index, condition: pick top
2014年08月21日 14点08分
5
rexrainbow
sprite的condition
2014年08月21日 14点08分
sppam
回复 rexrainbow :原来这个 pick top 是这么用的啊。。。多谢,学习了
~
2014年08月21日 15点08分
level 8
飞天星星小子
做出来了。。。大概就是这样
2014年08月21日 15点08分
6
rexrainbow
呃, 不用啦, sprite有pick top的condition
2014年08月21日 15点08分
杰夫jeffchen
回复 rexrainbow :对,这个方法比较简洁
2014年08月21日 15点08分
sppam
多谢啊!还特意做出来,我看明白了。Sprite2 相当于我图里的按钮,只要touch到就执行动作。 Sprite1相当于房子,被touch到时先要判断touch坐标是不是在 按钮 范围内。如果在按钮范围内就不触发房子的动作。如果没点到按钮,只点到房子再触发房子的动作。思路相当清晰
~
2014年08月21日 15点08分
飞天星星小子
回复 杰夫jeffchen :我不会嘛
2014年08月21日 15点08分
level 9
rexrainbow
还有另一个方式, 使用rex_button behavior.
它提供on clicked事件, 并且可以设定成on touch end才触发. 也可以是touch start触发.
除了这个特点外, 当多个有此behavior的实体被touch到时, 会取visible, 且z index最上层的实体触发on clicked.
也就是说, 这个例子里, 你可以把“退出”设定成invisible, 看不到就不会被(rex_button behavior) click到了.
这个behavior需要先放rex_touchwrap plugin进project. 详细看我的说明文件.
2014年08月21日 15点08分
7
飞天星星小子
方便多了
2014年08月21日 15点08分
rexrainbow
连结又被吞了
2014年08月21日 16点08分
level 13
傅老師_台灣
若要判断不同物件并要做出优先权判断,可用<Else>做出分岔结构。在这个例子中,优先权高的放上面。
但这没办法照Z-order给与优先权。
2014年08月21日 17点08分
8
傅老師_台灣
还是<button>插件方便~~
2014年08月21日 17点08分
sppam
回复 傅老師_台灣 :
各种方法研究了一下,最后还是得用插件解决。因为这个房子和按钮的例子还比较固定,可以用一些其他方法解决。但之后还有个场景随机生成一些气球往上飘,点击后爆炸。这些气球也会有重叠。。。我希望点一次只炸掉最上面的,不要把被挡住的也一起炸掉。
2014年08月22日 03点08分
傅老師_台灣
回复 sppam :这个真的得用<button>了
2014年08月22日 04点08分
level 9
rexrainbow
rex_button behavior 在官网上算冷门的插件, 但我的队友将它列为"必用"等级. 是不是"必用", 就看使用者的感觉了.
2014年08月22日 03点08分
9
level 5
_兵马俑
我的办法是,让干扰的spite destoy掉,然后放一个样子样的spite摆在原来的位置,不设置事件。
2014年09月13日 02点09分
10
1