限制物体移动区域

我鼠标拖动一个物体,物体可跟着我的鼠标移动, 现在我想让这个物体移动区域限制在一个半径为200的园内,
如何实现, 我拖动物体,这个物体只能在园内移动,就算我鼠标跑出园外,物体还在园内边缘

if(){}

谢谢回答,但是可以具体点吗? 我用if判断 不行, 比如中心点 为(0,0) 物体限制半径为 200

触摸点和中心点的角度转换成坐标就好了。

也获取 物体和中心的夹角了,是一个number类型的 ,这个怎么用

已知角度和斜边求宽高。cos和sin

首先求得中心点到鼠标点的距离dis(注意坐标的坐标系要统一),if(dis>200){
这个时候,你的物体应该是在一个已中心点为圆心,200为半径的圆上的,具体在哪根据的算出的角度得出,已知圆心和半径,求已知角度的圆上一点。
}else{
物体的坐标=鼠标点坐标。
}

getPosInCircle: function (angle, radius, center) {//求圆上某角度的点的坐标
var x = Math.floor(center.x + radius * Math.cos(angle * Math.PI / 180));//Math.floor不加上的话,当angle=90时x不准确
var y = Math.floor(center.y + radius * Math.sin(angle * Math.PI / 180));
return cc.v2(x, y);
},

最近刚好做了这么个类似的游戏,整理了一些数学公式:grin:

大哥,我写了这个方法,传参之后,发现不对, 物体直接固定死了

这个是什么原因, 我传参不知道对不对 , 第一个是夹角,第二个是半径200,第三个是自身的坐标

在OnTouchMove 函数中调用

mark

不是传自身的坐标,而是圆心的坐标,你上面不是举例说中心点(0,0)吗?第三个参数应该传你的中心点坐标。

现在传的是 中心点的坐标,但是 物体一卡一卡的 拉到边缘 又卡到其他地方,这个判断 写到 update里面还是写到OnTouchMove 移动函数里面

这要看你的this.len是在哪里计算的,直接跟在this.len的计算后就行了。

好的 谢谢 大哥 ,我在研究研究 感谢!