Android Studio中Pong游戏双Paddle同时移动问题求助
解决Android Studio中Pong游戏双Paddle同时移动的问题
嘿,我明白你现在遇到的问题了——你的当前代码只能处理单个触摸点,所以没法同时控制两个 paddle 移动。这是因为默认的 event.getX() 和 event.getY() 只会返回第一个触摸点的坐标,当你用两个手指操作时,代码只会响应其中一个,自然没法实现双 paddle 同时动。
要解决这个问题,我们需要利用Android的多点触摸机制,遍历所有当前活跃的触摸点,逐个判断每个触摸点属于哪个 paddle 的控制区域,然后更新对应 paddle 的位置。下面是修改后的代码和关键说明:
修改后的onTouchEvent方法
@Override public boolean onTouchEvent(MotionEvent event) { // 获取当前屏幕上活跃的触摸点总数 int pointerCount = event.getPointerCount(); // 遍历每个触摸点,分别处理对应的paddle for (int i = 0; i < pointerCount; i++) { float touchX = event.getX(i); float touchY = event.getY(i); // 根据触摸点的Y坐标,判断归属的paddle控制区域 if (touchY > screenY / 2) { // 下半区触摸点,更新第一个paddle的位置 playerPoint1.set((int) touchX, (int) touchY); } else if (touchY < screenY / 2) { // 上半区触摸点,更新第二个paddle的位置 playerPoint2.set((int) touchX, (int) touchY); } } // 确保消费所有触摸事件,避免事件传递给其他视图 return true; }
关键逻辑说明
- 遍历所有触摸点:通过
event.getPointerCount()获取当前屏幕上的触摸点数量,循环处理每个点的坐标,这是实现多点触摸的核心。 - 精准获取单个触摸点坐标:使用带索引的
getX(i)和getY(i)方法,而不是默认的无参方法,这样能拿到每个触摸点的独立坐标。 - 自动兼容多点事件类型:不管是初始触摸的
ACTION_DOWN、滑动的ACTION_MOVE,还是新增触摸点的ACTION_POINTER_DOWN,循环都会处理所有活跃的触摸点,确保两个 paddle 能同时响应各自的操作。
这样修改后,你就可以用两个手指分别触摸屏幕上下半区,同时控制两个 paddle 移动了。
内容的提问来源于stack exchange,提问作者Ark Luis
相关产品推荐
相关产品推荐

