拖拽小游戏,如何点击元素拖动,点击元素周边的空白部分不拖动

想实现一个拖拽的功能,但是图片是不规则的,cocos会自动生成矩形,点击矩形周围的空白元素也会拖动。怎么才能实现只点击元素才拖动,周围的透明部分不动?

拖动的实现代码如下

1赞

最简单的方法用hittest,碰撞那个包围盒子,自己给可以拖拽的区域包上,官方案例工程中有例子。第二种方法就是像素检测

首先给对象加个多边形碰撞组件,然后在点击触发(TOUCH_START)时,
用 cc.Intersection.pointInPolygon 方法,判断点击的位置是否在多边形内部, 如果在内部就允许后面的拖拽发生。

1赞

谢谢大佬,已用碰撞系统解决。现在又有一个新的问题,我的图片是叠在一起的,拖拽前面的元素没有任何问题,但是拖拽后面元素的时候,它判定我点击的是前面元素的透明矩形框,所以不会有反应。非要在矩形框外面才能拖动后面的元素。

如图在红色矩形框中拖动后面元素就不行。碰撞代码如下:

同层级的触摸事件会被上层吞掉。目前想到的解决方法,就是把触摸 start 监听挂 所有元素的父节点上,然后父节点检测到触摸后 通过 自定义的冒泡事件派发给所有子节点。

1赞

怎样父节点派发给子节点啊,冒泡事件派发不都是子节点往上传递派发给父节点吗?

用全局事件也行,父节点用 cc.director.emit 发送,子节点用 cc.director.on/off 注册/注销 事件