libgdx中的多点触控

时间:2015-09-07 22:04:33

标签: java libgdx multi-touch

我的2个创建的按钮可以移动有一个大问题..它们都工作但是使用相同的getX(),得到Y()数据。当我用不同的手指同时触摸它们时,如何让它们获取差异数据?

(下一步用于拍摄的一个按钮是

foreverTimer+=delta;
    if(foreverTimer<0.1){if(attackPressed){
        float y=0, x=0, getY=Gdx.input.getY(), getX=Gdx.input.getX();
        if((HEIGHT - getY)>=attackY+attackButton.getHeight()/3||(HEIGHT - getY)<=attackY-attackButton.getHeight()/3||getX>attackX+attackButton.getWidth()/3||getX<attackX-attackButton.getWidth()/3)
        {   
            y=(HEIGHT - getY-attackY); x = getX-attackX;
            Player.shoot(x, y);
        }}
    }else
    if(foreverTimer>=0.1){
//RIGHT HERE I COMMAND TO TAKE NEW X,Y FOR NEXT BUTTON AND TURN OFF OTHER BUTTON BUT THE X AND Y ARE STILL THE SAME
            float getY=Gdx.input.getY(), getX=Gdx.input.getX();
            foreverTimer-=0.1;
            if(movePressed)
            {
                if(getX>moveX+moveButton.getWidth()/3){a=false; d=true;} else if(getX<moveX-moveButton.getWidth()/3){d=false; a=true;}      else{a=false; d=false;}
                if((HEIGHT - getY)>moveY+moveButton.getHeight()/2){s=false; Player.sit=false; spres=false;  w=true; wpres=true;} else if((HEIGHT - getY)<moveY-moveButton.getHeight()/2){s=true; spres=true; w=false; wpres=false;}           else{s=false; Player.sit=false; spres=false; w=false; wpres=false; }  
            }else {wpres=spres=d=a=false;}
        }

1 个答案:

答案 0 :(得分:1)

你应该使用

dm[1:3,1:3]
         r1       r2       r3
r1  0.00000 24.64059 26.63301
r2 24.64059  0.00000 25.69792
r3 26.63301 25.69792  0.00000

并尝试迭代一些最大触摸次数(在您的示例中为2),以获得手指触摸屏幕的所有 X Y 坐标。然后检查(x,y)是否与您的某个按钮有关。

请同时考虑使用 Scene2d 及其Actors和ContactListeners。我认为在你的情况下这将是非常有用的。

你可以在这里阅读:

https://github.com/libgdx/libgdx/wiki/Scene2d