Java Libgdx-有一个实体部分豁免Phsyics

Java Libgdx-有一个实体部分豁免Phsyics,java,android,ios,libgdx,box2d,Java,Android,Ios,Libgdx,Box2d,我正在使用LibGDX制作一款手机游戏,现在我面临着一个特定的问题 我有一个可以与墙碰撞的实体,当这种情况发生时,墙会受到一定的力,然后导致它离开屏幕,不再正确定位 我曾尝试使用LibGDX的isSensor变量,但在使用之后,我的实体直接穿过了墙 如何使墙阻止实体移动,但不受实体力的影响 我正在使用物理体编辑器来编辑我的共线形状,因为它们不是正常的几何格式 谢谢, Rene您只需将墙设置为静态即可 我不确定如何使用physics body editor,因为我从未使用过它,但这里有一些我不久前

我正在使用LibGDX制作一款手机游戏,现在我面临着一个特定的问题

我有一个可以与墙碰撞的实体,当这种情况发生时,墙会受到一定的力,然后导致它离开屏幕,不再正确定位

我曾尝试使用LibGDX的isSensor变量,但在使用之后,我的实体直接穿过了墙

如何使墙阻止实体移动,但不受实体力的影响

我正在使用物理体编辑器来编辑我的共线形状,因为它们不是正常的几何格式

谢谢,


Rene

您只需将墙设置为静态即可

我不确定如何使用physics body editor,因为我从未使用过它,但这里有一些我不久前编写的代码,可以做类似的事情

private void buildRoom()
{
    Vector2[] roomCorners = new Vector2[]{new Vector2(0f, 0f),
                                                 new Vector2(0f, ROOM_HEIGHT),
                                                 new Vector2(ROOM_WIDTH, ROOM_HEIGHT),
                                                 new Vector2(ROOM_WIDTH, 0f)};

    ChainShape roomShape = new ChainShape();
    try
    {
        roomShape.createLoop(roomCorners);
        BodyDef roomDef = new BodyDef();
        roomDef.type = BodyDef.BodyType.StaticBody;
        Body room = world.createBody(roomDef);
        room.createFixture(roomShape, 0);
    } finally
    {
        roomShape.dispose();
    }
}

谢谢你的回复。不幸的是,当我将密度设为0时,它产生了相反的效果,墙立即被完全推开,这使问题变得更糟。很明显,我可以添加一个荒谬的密度,但我不认为这是正确的方法。我认为密度是不相关的。你需要把它变成一个静态物体。密度0是我在某处读到的。听起来好像不对,但我将编辑并删除该部分。在我的情况下,静态实体不起作用,因为墙受到向下速度的影响,但我已通过使用KinameticBody解决了我的问题,它不受力的影响,而是受速度的影响。我已通过在LibGdX中使用KinomaticBody解决了我的问题。