繁体   English   中英

如何检测用户是否触摸了我的Sprites /屏幕?

[英]How do I detect if the user touched my Sprites/screen?

基本上,精灵会每隔(1,2或3秒)随机产生一次,并且是无限次产生的。 我希望精灵在触摸屏幕后消失。 (Android触摸事件)

public void newEnemy(){
        Sprite newEnemy=Pools.obtain(Sprite.class);
        newEnemy.set(enemy);
        newEnemy.setPosition(200, 700);
        enemies.add(newEnemy);
    }

public void update(){
        deltaTime=Gdx.graphics.getDeltaTime();
        timer+=1*deltaTime;
        timer2+=1*deltaTime;
        timer3+=1*deltaTime;

        if(timer>=random){
            newEnemy();  //spawn a new enemy
            timer-=random;
            random=rTime.nextInt(3)*1f+1;//create random time if timer>= initial random time;
        }

您将需要设置一个触摸监听器。 有关此的信息

然后,您需要检查触摸位置是否在您的精灵范围内。 这样做的常见方法是创建一个矩形,然后检查触摸位置是否在矩形内,如下所示

 Rectangle2D bounds = new Rectangle2D.Float(x, y, width, height);

`if(bounds.contains(`the touch x value`,` the touch y value`){`

         //your code to remove the sprite
    }

另外,您也可以用Sprite编写自己的方法,如果您只需要contains方法,那将是一个更好的决定。 这样,您不必导入其他库。 (请注意,这并没有太大的区别,但这是一个好习惯)

public boolean contains(int x, int y) {
     return (x > this.x && y > this.y && x < this.x + this.width && y < this.y + this.height);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM