Input 无法检测是否在libgdx中触摸了矩形

Input 无法检测是否在libgdx中触摸了矩形,input,libgdx,touch,rectangles,Input,Libgdx,Touch,Rectangles,我有一个带精灵的矩形,我必须检测触摸位置是否在矩形内 这是我的密码 if (Gdx.input.isTouched()) { int x1 = Gdx.input.getX(); int y1 = Gdx.input.getY(); Vector3 inputs = new Vector3(x1, y1, 0); gamecam.unproject(inputs); Gdx.app.log("x" +

我有一个带精灵的矩形,我必须检测触摸位置是否在矩形内

这是我的密码

    if (Gdx.input.isTouched())
    {
        int x1 = Gdx.input.getX();
        int y1 = Gdx.input.getY();
        Vector3 inputs = new Vector3(x1, y1, 0);
        gamecam.unproject(inputs);
        Gdx.app.log("x" + inputs.x, "y" + inputs.y);
        Gdx.app.log("rect" + rectangle.x, "rect" + rectangle.y);
        if(rectangle.contains(inputs.x,inputs.y))
        {
            Gdx.app.log("x" + inputs.x, "y" + inputs.y);
            Gdx.app.log("rect" + rectangle, "rect" + rectangle.y);
        }
    } 
矩形定义

    BodyDef bdef = new BodyDef();
    bdef.type = BodyDef.BodyType.StaticBody;
    b2body = screen.getWorld().createBody(bdef);

    rectangle = new Rectangle();
    rectangle.setHeight(55);
    rectangle.setWidth(55);
    PolygonShape head = new PolygonShape();
    rectangle.setX(300);
    rectangle.setY(10);
    bdef.position.set((rectangle.getX() - rectangle.getWidth() / 2) / MyJungleGame.PPM, (rectangle.getY() - rectangle.getHeight() / 2) / MyJungleGame.PPM);
    head.setAsBox(rectangle.getWidth() / 2 / MyJungleGame.PPM, rectangle.getHeight() / 2 / MyJungleGame.PPM);
    FixtureDef fdef = new FixtureDef();
    fdef.shape = head;
    setPosition(b2body.getPosition().x - getWidth() / 2, b2body.getPosition().y - getHeight() / 2);
这是我的输出

屏幕底部的小矩形就是我创建的矩形。但是,当我点击它时,什么也没有发生。我检查了坐标,这是日志

  x-0.925: y-0.5625
  rect300.0: rect10.0
  x-0.925: y-0.5625
  rect300.0: rect10.0
  x-0.925: y-0.5625
我试着用下面的方法检查触摸

        if (inputs.x > sprite.getX() && inputs.x < sprite.getX() + sprite.getWidth())
        {
            if (inputs.y > sprite.getY() && inputs.y < sprite.getY() + sprite.getHeight())
            {
                Gdx.app.log("sprite touched", "");
            }
        }
if(inputs.x>sprite.getX()&&inputs.xsprite.getY()&&inputs.y

这也不行。知道我在哪里犯的错吗?请帮忙。提前感谢

因为您使用的是Box2D,所以通过通用方式检测碰撞对于新用户来说更为复杂。 但是,查看您的代码。。。 我建议将这个坐标与你们世界的PPM结合起来考虑:

int x1 = Gdx.input.getX();
int y1 = Gdx.input.getY();
Vector3 inputs = new Vector3(x1, y1, 0);
此外,如果要使用box2d构建碰撞系统,应使用以下方法: