gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:35:37 25 4
gpt4 key购买 nike

我有这些 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com