在python处理模式下使用Box2D时如何检测冲突?

2024-05-12 11:08:04 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,在我的处理草图(在python模式下使用box2D)中,我希望两个实体在碰撞时改变颜色。我一直在遵循Daniel Shiffman的书《代码的本质》,并从中尝试实现“beginContact()”函数以实现我的目标。这是函数的代码-

def beginContact(cp):
    m1=Mover(0,0)
    m2=Mover(0,0)
    a1=Attractor(0,0)
    a2=Attractor(0,0)

    f1=cp.getFixtureA()
    f2=cp.getFixtureB()

    b1=f1.getBody()
    b2=f2.getBody()

    o1=b1.getUserData()
    o2=b2.getUserData()

    if o1.getClass()==Mover.class:
        o1.c=color(255,100,100)
    else:
        o1.c=color(255,255,255)

    if o2.getClass()==Mover.class:
        o2.c=color(255,100,100)
    else:
        o2.c=color(255,255,255)

但是当我运行它时,草图没有检测到任何碰撞。它从不执行beginContact函数,在控制台窗口中,我收到以下消息-

缺少beginContact()方法。java.lang.NoSuchMethodException:jycessing.PAppletJythonDriver.beginContact(org.jbox2d.dynamics.contacts.Contact) 您缺少endContact()方法。java.lang.NoSuchMethodException:jycessing.PAppletJythonDriver.endContact(org.jbox2d.dynamics.contacts.Contact)

函数中的某些细节可能不清楚,因为它们链接到草图的其他部分。但是我不认为这有什么关系,因为从上面的信息中可以明显看出,草图不能只找到函数

问题是,在代码本的本质中,所有示例都是Java处理模式。因此,我认为在实现beginContact函数时存在一些错误。有趣的是,当我用Java手动转换我的全部代码并在Java模式下运行时,它工作得非常好

PS-这是我的第一个问题,我对一般的处理和编程是新手,所以请帮助我!我的问题可能太长了,如果是的话,请评论一下。谢谢!;)


Tags: 函数代码模式javacpmovercolorf2