文章转自:https://www.dadadatou.com/archives/strt2.html
我们需要实现的目标是一个控制人物移动的虚拟摇杆
第一步:我们需要获取我们摇杆的移动位置,再将获取到坐标转换成节点坐标。所以这里我们要开启事件监听如图:
通过事件监听我们就能获取到我们想要的值,如图:
第二步:也是最关键关键的一步,我们需要做到移动stick,不能超出stckBg,并且将值转换后传递给需要控制的人物,因此我们需要定义移动的最大半径以及他的方向
通过图片我们知道,我们实际移动的坐标是(x2,y2),但是我们规定了最多不能超超出半径(x1,y1),通过图片我们明显的知道圈内的三角形和圈外的三角形是相似的,由此我们就能求出(x1,y1)。同时我们将(x2,y2)的坐标进行归一,具体代码如图所示
第三步:将我们计算出来了值传递给需要控制的人物。至于为什么angle需要减去90度可以去看我的上一篇文章
最后附上效果图和源码图