You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:30:12