libgdx - 与不同物体碰撞的物体
libgdx - collision with an object made by different bodies
您好,我有一个对象,它由多个主体组成,它们之间的区别在于有人是过滤器而有人不是。
我希望我的演员在与物理面碰撞时被摧毁,并在与传感器碰撞时产生不同的效果。
那么,如果接触发生在一个部分或另一个部分,我该如何检查我的碰撞监听器呢?
假设你有一头 table 和一群奶牛,你想确定是否有奶牛与 table 相撞。
Body table;
Array<Body> cows;
//define the table and cows
ContactListener listener = new ContactListener() {
@Override
public void beginContact(Contact contact) {
Body bodyA = contact.getFixtureA().getBody();
Body bodyB = contact.getFixtureB().getBody();
for (Body cow : cows) {
if (((cow == bodyA) || (cow == bodyB)) &&
((table == bodyA) || (table == bodyB))) {
//do something
}
}
}
};
这是一个通用的答案,但它告诉您如何检查哪些物体发生了碰撞,我相信这可以回答您的问题。
可能有很多方法可以做到这一点,但这里是我如何进行物理到游戏 object 映射的方法。不是我虔诚地坚持的东西,但我尝试 - 总是有例外。
如果我有一个 "game object",它就有一个 body。正文用户数据设置为 object.
如果我有一个由部分组成的"game object",这些部分就是"game object parts",它们将是body的Fixtures的用户数据。
我的 "Game Object" 是 "Part Objects" 的组合,其方式与 Body 具有夹具部件的方式相同。
如果你有这样的东西,那么我想你可以很容易地区分碰撞中的 object 部分。如果出于某些其他原因您真的希望 "Game Object" 由多个主体组成,那么我仍然会让 "Game Object" 具有 "Parts" 并设置为主体的用户数据弥补。希望对您有所帮助。
我还更进一步 - 我的 "game objects" 有自己的 collection 碰撞处理程序。所以我的单个注册碰撞侦听器获取用户数据 objects 并使用相同的参数调用它们的碰撞处理程序。利用多态性伙计。现在我可以将我想要的给定 object 的碰撞行为附加到那个 object。我不必遍历我所有的 object 来决定在我注册的碰撞侦听器中做什么。
您好,我有一个对象,它由多个主体组成,它们之间的区别在于有人是过滤器而有人不是。 我希望我的演员在与物理面碰撞时被摧毁,并在与传感器碰撞时产生不同的效果。 那么,如果接触发生在一个部分或另一个部分,我该如何检查我的碰撞监听器呢?
假设你有一头 table 和一群奶牛,你想确定是否有奶牛与 table 相撞。
Body table;
Array<Body> cows;
//define the table and cows
ContactListener listener = new ContactListener() {
@Override
public void beginContact(Contact contact) {
Body bodyA = contact.getFixtureA().getBody();
Body bodyB = contact.getFixtureB().getBody();
for (Body cow : cows) {
if (((cow == bodyA) || (cow == bodyB)) &&
((table == bodyA) || (table == bodyB))) {
//do something
}
}
}
};
这是一个通用的答案,但它告诉您如何检查哪些物体发生了碰撞,我相信这可以回答您的问题。
可能有很多方法可以做到这一点,但这里是我如何进行物理到游戏 object 映射的方法。不是我虔诚地坚持的东西,但我尝试 - 总是有例外。
如果我有一个 "game object",它就有一个 body。正文用户数据设置为 object.
如果我有一个由部分组成的"game object",这些部分就是"game object parts",它们将是body的Fixtures的用户数据。
我的 "Game Object" 是 "Part Objects" 的组合,其方式与 Body 具有夹具部件的方式相同。
如果你有这样的东西,那么我想你可以很容易地区分碰撞中的 object 部分。如果出于某些其他原因您真的希望 "Game Object" 由多个主体组成,那么我仍然会让 "Game Object" 具有 "Parts" 并设置为主体的用户数据弥补。希望对您有所帮助。
我还更进一步 - 我的 "game objects" 有自己的 collection 碰撞处理程序。所以我的单个注册碰撞侦听器获取用户数据 objects 并使用相同的参数调用它们的碰撞处理程序。利用多态性伙计。现在我可以将我想要的给定 object 的碰撞行为附加到那个 object。我不必遍历我所有的 object 来决定在我注册的碰撞侦听器中做什么。