【问题标题】:ChainShape in Box2DBox2D 中的链形
【发布时间】:2016-02-13 14:58:53
【问题描述】:


我最近开始学习 libgdx,但遇到了 Box2D 的 CainShape 的问题。

我的第一个目标是简单地创建一个带有 ChainShape 的盒子。

为了实现这一点,我将四个 Vector2 添加到一个数组中并使用它们创建一个循环。

结果取决于阵列中的排列,要么是沙漏形的东西(左上角与右下角相连,右上角与左下角相连),要么是错误

表达式:b2DistanceSquared(v1, v2) > 0.005f * 0.005f

这是我目前使用的代码:

Vector2[] box = new Vector2[4];

    box[1] = new Vector2(0 -    bounds.getWidth() / 2 / Main.PPM, 0 -   bounds.getHeight() / 2 / Main.PPM);


    box[0] = new Vector2(       bounds.getWidth() / 2 / Main.PPM, 0 -   bounds.getHeight() / 2 / Main.PPM);


    box[2] = new Vector2(0 -    bounds.getWidth() / 2 / Main.PPM,       bounds.getHeight() / 2 / Main.PPM);


    box[3] = new Vector2(       bounds.getWidth() / 2 / Main.PPM,       bounds.getHeight() / 2 / Main.PPM);

    ChainShape chainShape = new ChainShape();
    chainShape.createLoop(box);

    fdef.shape = chainShape;
    fixture = body.createFixture(fdef);

我希望有人能告诉我我错过了什么。
提前致谢!

【问题讨论】:

    标签: java libgdx box2d shape


    【解决方案1】:

    调整您传递的参数并放入此代码中。这段代码 肯定会跑

    ChainShape chain = new ChainShape();
    
    createChain().Vec2[] vertices = new Vec2[2];
    vertices[0] = box2d.coordPixelsToWorld(0,150); 
    vertices[1] = box2d.coordPixelsToWorld(width,150);
    chain.createChain(vertices, vertices.length);
    
    FixtureDef fd = new FixtureDef();
    fd.shape = chain; 
    fd.density = 1;
    fd.friction = 0.3;
    fd.restitution = 0.5;
    body.createFixture(fd);
    

    希望这能回答这个问题,如果不是,请询问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多