平滑摇杆的实现

      很久不写关于游戏逻辑的文章了,略显生疏了,最近公司的项目需要用到平滑支持360度各角度摇动的摇杆,就随手写了一个,并非是区域判定的方法,那种方法很难达到用户的舒适度,体验感会下降得比较明显。

      通过滑动的前后2个point来判断角度,为了舒适的平滑必须在手指离开屏幕的同时释放初始点,即如果手指没有离开屏幕时候的任何滑动的停止点都作为相对于初始点的结束点,这样做的讨巧点同样是为了提高用户体验,话不多说,大家一起来看代码:

	/***
	 * 得到两点之间的角度
	 * 
	 * @param px1
	 * @param py1
	 * @param px2
	 * @param py2
	 * @return
	 */
	public static double getAngle(float px1, float py1, float px2, float py2) {
		float x = px2 - px1;
		float y = py1 - py2;
		float hyp = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
		float cos = x / hyp;
		float rad = Math.acos(cos);//注意反余弦
		float deg = 180 * (rad / Math.PI);
		if (y < 0)//
		{
			deg = -deg;
		} else if ((y == 0) && (x < 0)) {
			deg = 180;
		}
		return deg;
	}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值