java - box2d 主体特定区域上的触摸事件

标签 java input libgdx box2d

我有这些 box2d 实体。我想检查 body 上的触摸事件。具体来说,就是触摸 body 的某个部位。请参见下图,在主体内,如何检查用户是否触摸了主体的蓝色区域(右上角)。

enter image description here

我可以获取触摸坐标,将其转换为世界坐标并检查它们是否与盒子的坐标重叠,但即使触摸盒子内部的任何位置,也会触发。

最佳答案

也许为时已晚,但我会回答您关于谁需要帮助的问题。

您应该为主体创建一个固定装置,用于定义主体的边缘和属性。您需要在车身上添加固定装置作为传感器。代码示例看起来像这样。

    // create bodydef
    BodyDef bdef = new BodyDef();
    bdef.type = BodyType.DynamicBody;
    bdef.position.set(60 / PPM, 120 / PPM);
    bdef.fixedRotation = true;
    bdef.linearVelocity.set(1f, 0f);

    // create body from bodydef
    Body body = world.createBody(bdef);

    // create box shape for player collision box
    PolygonShape shape = new PolygonShape();
    shape.setAsBox(13 / PPM, 13 / PPM);

    // create fixturedef for player collision box
    FixtureDef fdef = new FixtureDef();
    fdef.shape = shape;
    fdef.density = 1;
    fdef.friction = 0;

    // create player collision box fixture
    body.createFixture(fdef);
    shape.dispose();

    // create box shape SENSOR for player
    shape = new PolygonShape();
    shape.setAsBox(13 / PPM, 3 / PPM, new Vector2(0, -13 / PPM), 0);

    // create fixturedef SENSOR for player 
    fdef.shape = shape;
    fdef.isSensor = true;

    // create player SENSOR fixture
    body.createFixture(fdef).setUserData("SENSOR");;

祝你有美好的一天。

关于java - box2d 主体特定区域上的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757719/

相关文章:

java - 我的线程不适用于我的队列

javascript - 检查所有文本输入是否为空,是否使用 if/else 语句显示警报?

java - 如何检查用户是否未输入任何内容以便显示错误消息

libgdx - 在 LibGDX 中基于触摸制作连接点类型的游戏

java - libgdx:使用相机测试对象是否超出屏幕

java - 如何将列乘以ListView中的数字,Android

java - 如何在java中将2个矩阵相乘,然后将结果用作Imgproc.warpPerspective函数的转换矩阵

java - 在不使用迭代的情况下编写三角形数(算术级数的总和)

input - 轻量级、跨平台输入库

java - 平铺 map 上的 LibGDX AStar 寻路