繁体   English   中英

Box2D LibGDX绳索问题

[英]Box2D LibGDX Rope issue

我正在使用以下代码创建带有一系列Box2D实体的绳索:

public void create(float length, float ropeLength){
    Array<Body> bodies = new Array<Body>();
    bodies.add(BodyFactory.createBox(world, position.x, position.y, length, length, BodyType.StaticBody, 0, 0, 0, "RopeMain"));

    for(int i = 1; i < ropeLength; i++){
        bodies.add(BodyFactory.createBox(world, position.x, position.y - (((length/2) / Core.PPM) * i),
                length, length, BodyType.DynamicBody, 0, 0, 0, "RopeBody" + i));

        RopeJointDef rDef = new RopeJointDef();
        rDef.bodyA = bodies.get(i - 1);
        rDef.bodyB = bodies.get(i);
        rDef.collideConnected = true;
        rDef.maxLength = (length/2)/Core.PPM;
        rDef.localAnchorA.set(position.x, -((length / 2) / Core.PPM));
        rDef.localAnchorB.set(position.x, ((length / 2) / Core.PPM));
        world.createJoint(rDef);
    }
}

请允许我分享一些参数...

对于BodyFactory.createBox它需要满足以下条件:

世界,xPos,yPos,宽度,高度BodyType,密度,摩擦力,恢复,夹具用户数据。(长度相同,因为它使用方框)

Core.PPM是每米的像素。 另请注意,该位置在构造函数中被PPM划分。

问题:以下几行为何向右射击?

在此处输入图片说明

任何信息都非常有帮助,密度,摩擦力和恢复力将如何影响绳索? 谢谢!

关节的localAnchor对于身体的中心,不是绝对值。 这意味着,如果要将关节设置为bodyA中心底部bodyA 中心顶部bodyB需要使用

    rDef.localAnchorA.set(0, -((length / 2) / Core.PPM));
    rDef.localAnchorB.set(0, ((length / 2) / Core.PPM));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM