所以我试图制作一个单向墙,这意味着我的演员只能传递这个对象的一方(例如只有底侧或上侧)。 我开始阅读本教程:one-way-walls 但是当我尝试检查我的演员的方向后,为了禁用碰撞它不起作用。 我认为我的问题可以在这一部分
由于我们将使用BeginContact事件,每次碰撞只发生一次,我们只能使用SetEnabled一次来改变联系人的行为。问题是联系人将在每个步骤后恢复为再次启用。我们可以记下我们已经禁用的联系人,然后每次在PreSolve中检查它们的列表,但这比我今天可能感到困扰的那种效率低,工作量大。或者实际上任何一天:) 因此,我们只是悄悄潜入b2Contact.cpp并在Update函数的开头注释掉该行,重新启用联系人。完成后,它应如下所示://重新启用此联系人。 // m_flags | = e_enabledFlag;
问题是我在AndroidStudio中使用了java版本的libgdx,我不知道如何找到并更改这段代码。 所以我需要一种改变它的方法,或者一种不同的解决方案来避免这种碰撞状态"重新启用"在每个周期。
答案 0 :(得分:0)
您可以在preSolve
中解决此问题,并在灯具userData
中存储状态(如果要启用或不启用联系人)。当然,您应该在endContact
中恢复此标记。