角度计算错误,不知道怎么才能算对

我在鼠标最开始点击的位置生成了一个箭头(橙色),鼠标会移动,然后需要这个箭头边长并且指向我的移动的位置(需要实现红色箭头这样的效果);

大佬们请看看,帮忙解决下问题,不知道是哪里的算法出错了

这是代码

编程鬼才 你就不能let pos = event.getLocation() 这么写吗?

1赞

把左 箭头 的图片 横过来,-> 变成这样,这样的指向是是0度,你的箭头是竖着的,所以你需要算完后,± 90度来调整

public static getAngle(x1:number, y1:number, x2:number,y2:number):number
{
	var angle:number = Math.atan2(y2 - y1, x2 - x1);
	return (angle / Math.PI * 180) * -1;
}

这样

onTouchMove(event: cc.Event.EventTouch) {
    let arrowNode = cc.find("oper_arrow", this.node);
    let v = event.getLocation().sub(arrowNode.convertToWorldSpaceAR(cc.Vec2.ZERO)).normalize();
    arrowNode.rotation = Math.atan2(v.x, v.y) * 180 / Math.PI;
}
1赞

1赞

谢谢大佬,是的,这样是对的!那如果我要把箭头边长,从开始的位置到我点击的位置

也很简单呀,你把它们之间的距离算出来就行了。

onTouchMove(event: cc.Event.EventTouch) {
    let arrowNode = cc.find("oper_arrow", this.node);
    let pos = event.getLocation().sub(arrowNode.convertToWorldSpaceAR(cc.Vec2.ZERO));
    let v = pos.normalize();
    arrowNode.height = pos.mag();
    arrowNode.rotation = Math.atan2(v.x, v.y) * 180 / Math.PI;
}

4赞

哈哈哈哈

mark