android游戏中实现对象的触屏移动

本文介绍如何在Android游戏中实现对象的触屏移动。通过onTouchEvent()获取坐标,计算对象移动的分速度,并在单独线程中刷新位置。文章讨论了在移动过程中遇到的对象颤动和手离开屏幕后仍移动的问题,以及通过添加isMove布尔变量和优化坐标计算来解决这些问题的方法。
摘要由CSDN通过智能技术生成

首先在对象类中,通过 onTouchEvent(event e) 这个方法来获得当前坐标 例如:


然后通过参数的形式 将touchX 和 touchY 传入一个自定义的方法move()中


如图所示,方法中。第一,第二个参数 是对象当前的坐标。 我是通过计算出touch坐标 和当前坐标的夹角的余弦,正弦值,再乘以对象的速度,分别得出对象的分速度。

然后将这个move 方法调入到 单独运行的线程中,不断刷新。那么对象就会以一定速度 向所touch的坐标 移动。

当然,这个方法还不完美,出现的问题有 1:当对象到达所touch的坐标后,会不停地颤动

                                                                          2:当手离开屏幕的时候,对象还会继续移动

这些问题在后面要继续解决

对于上面的两个问题,我打算声明一个 布尔变量 isMove 来判断 飞机是否需要移动(即手指是否在触摸屏上)

然后修改了onTouchEvent 方法


当手指抬起时,isMove 变为false,然后在move()方法中进行判定,代码如下


修改代码后,发现之前发现的两个问题都解决了。

对于颤抖问题,我想是因为计算的精度问题 所以对象不能精确地移动到 touch 的那点坐标;修改代码后 因为令对象坐标等于当前坐标 就可以消除了这种情况。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值