PulleyJoint 이상한 행동 Box2D

라미 화이트

box2d와 libgdx를 사용하여 안드로이드 게임에서 레버를 만들려고합니다. 게임이 시작되면 레버의 두 플랫폼이 완벽하게 균형을 이루고 있고 레버의 한 플랫폼에서 상자를 움직이면 예상대로 내려가지만 본체를 밖으로 옮기면 두 플랫폼이 이전과 같이 다시 균형을 이루지 않습니다. .

이 코드를 사용하여 2 개의 플랫폼을 만듭니다.

private Body setupShape(World world, float cx, float cy, float cw, float ch){
    Body ptf;
    PolygonShape shape = new PolygonShape();
    shape.setAsBox(cw / 2, ch / 2);
    FixtureDef fdef = new FixtureDef();
    fdef.shape = shape;
    fdef.density = 1.0f;
    fdef.friction = 1.0f;
    fdef.restitution = 0.0f;
    BodyDef bd = new BodyDef();
    //bd.allowSleep = false;
    bd.position.set(cx, cy);
    bd.fixedRotation = true;
    ptf = world.createBody(bd);
    //lever.setGravityScale(10);
    ptf.createFixture(fdef);
    ptf.setType(BodyDef.BodyType.DynamicBody);
    ptf.setUserData("Lever");
    shape.dispose();
    return ptf;
}

그리고 "PulleyJoint"를 사용하여 레버를 만드는 코드 :

PulleyJointDef pulleyDef = new PulleyJointDef();
    Vector2 bodyoneanchor = new Vector2(Constants.Pixel2SIf(360), Constants.Pixel2SIf(400));
    Vector2 bodytwoanchor = new Vector2(Constants.Pixel2SIf(660), Constants.Pixel2SIf(400));
    pulleyDef.initialize(bodyA, bodyB, bodyoneanchor, bodytwoanchor, bodyA.getWorldCenter(), bodyB.getWorldCenter(), 1);
    world.createJoint(pulleyDef);

내 코드의 문제점과 객체를 옮긴 후 레버의 균형을 다시 조정하는 방법을 알고 싶습니다.

다음은 내 문제를 더 명확하게 보여주는 그림입니다. http://costheta.net/quest.png

그 문제를 해결하는 데 도움을 주시면 대단히 감사하겠습니다.

친애하는!

업데이트 : 프리즘 조인트를 추가 한 후의 새 코드는 다음과 같습니다.

PulleyJointDef pulleyDef = new PulleyJointDef();
    Vector2 bodyoneanchor = new Vector2(Constants.Pixel2SIf(360), Constants.Pixel2SIf(400));
    Vector2 bodytwoanchor = new Vector2(Constants.Pixel2SIf(660), Constants.Pixel2SIf(400));
    pulleyDef.initialize(bodyA, bodyB, bodyoneanchor, bodytwoanchor, bodyA.getWorldCenter(), bodyB.getWorldCenter(), 1);
    world.createJoint(pulleyDef);

    BodyDef bd0 = new BodyDef();
    bd0.position.set(bodyoneanchor.x, bodyoneanchor.y);
    Body ptf0 = world.createBody(bd0);
    PrismaticJointDef pjd0 = new PrismaticJointDef();
    pjd0.initialize(ptf0, bodyA, ptf0.getWorldCenter(), new Vector2(0, 1));
    pjd0.motorSpeed = 200f;
    pjd0.maxMotorForce = 30.0f;
    pjd0.enableMotor = true;
    pjd0.lowerTranslation = -Math.abs(bodyA.getWorldCenter().y - bodyoneanchor.y);
    pjd0.upperTranslation = 0;//Math.abs(bodyA.getWorldCenter().y - bodyoneanchor.y);
    pjd0.enableLimit = true;
    world.createJoint(pjd0);

    BodyDef bd1 = new BodyDef();
    bd1.position.set(bodytwoanchor.x, bodytwoanchor.y);
    Body ptf1 = world.createBody(bd1);
    PrismaticJointDef pjd1 = new PrismaticJointDef();
    pjd1.initialize(ptf1, bodyB, ptf1.getWorldCenter(), new Vector2(0, 1));
    pjd1.motorSpeed = 200f;
    pjd1.maxMotorForce = 30.0f;
    pjd1.enableMotor = true;
    pjd1.lowerTranslation = -Math.abs(bodyB.getWorldCenter().y - bodytwoanchor.y);
    pjd1.upperTranslation = 0;//Math.abs(bodyB.getWorldCenter().y - bodytwoanchor.y);
    pjd1.enableLimit = true;
    world.createJoint(pjd1);
서른 투 대령

양쪽의 무게가 같고 장력이 서로 상쇄되어 움직임이 발생하지 않기 때문에 균형을 재조정해서는 안됩니다 (실생활에서 약간의 끈을 잡고 설정을 구축).

균형을 다시 맞추려면 상자의 초기 위치와 중앙에 배치 된 길이가 0 인 각 플랫폼에 스프링을 추가합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PulleyJoint 이상한 행동 Box2D

분류에서Dev

회전하는 동안 두 몸체가 충돌 할 때 Box2d 이상한 동작

분류에서Dev

플랫 포머 게임에서 떨어지는 동안 box2d 이상한 효과가있는 AS3

분류에서Dev

동일한 처리 스케치에서 Box2D 및 비디오 사용 문제

분류에서Dev

C ++ Box2D, Kinematic Body로 다이나믹 바디 동작 시뮬레이션

분류에서Dev

Logrotate.d 이상한 행동

분류에서Dev

libgdx의 box2d 버전에서 mousejoint와 관련된 이상한 오류

분류에서Dev

세계 좌표로 변환 할 때 이상한 Box2D 오류

분류에서Dev

b2FixtureDef.shape.SetAsArray가있는 Box2D 본문이 테트리스와 유사한 모양에서 작동하지 않음

분류에서Dev

box2D 세계 단계에서 신체가 이동 한 거리를 얻는 방법은 무엇입니까?

분류에서Dev

이상한 행동

분류에서Dev

Box2D 이동 운동학 바디는 접촉이 전혀 없더라도 동적 바디를 함께 이동합니다.

분류에서Dev

AndEngine에서 Box2d와 충돌시 수행 할 작업

분류에서Dev

불안정한 b2RevoluteJoint Box2D

분류에서Dev

box2d에서 동적 발사체 곡선 그리기

분류에서Dev

applyLinearImpulse가 작동하지 않음 (Box2d)

분류에서Dev

LIBGDX Box2D World QueryAABB가 작동하지 않음

분류에서Dev

Box2d (EdgeShape) 선에 색상 추가

분류에서Dev

Smart Mobile Studio에서 Box2D 개체에 색상 추가

분류에서Dev

Box2D에서 탐색 (조향 동작) 궤도 대상을 중지하는 방법은 무엇입니까?

분류에서Dev

box2d Javascript 예제의 간단한 일반 rayCasting

분류에서Dev

Physics Body Editor를 사용한 Libgdx Box2d 충돌 감지

분류에서Dev

Box2D : 이미지를 물리 몸체로 변환

분류에서Dev

box2d 점이 고정물에 있는지 확인

분류에서Dev

Andengine : Box2D 확장 vs 게임용 스프라이트

분류에서Dev

Libgdx box2d ContactListener는 매우 결함이 있습니다.

분류에서Dev

memcpy의 이상한 행동

분류에서Dev

memcpy의 이상한 행동

분류에서Dev

jquery로 이상한 행동

Related 관련 기사

  1. 1

    PulleyJoint 이상한 행동 Box2D

  2. 2

    회전하는 동안 두 몸체가 충돌 할 때 Box2d 이상한 동작

  3. 3

    플랫 포머 게임에서 떨어지는 동안 box2d 이상한 효과가있는 AS3

  4. 4

    동일한 처리 스케치에서 Box2D 및 비디오 사용 문제

  5. 5

    C ++ Box2D, Kinematic Body로 다이나믹 바디 동작 시뮬레이션

  6. 6

    Logrotate.d 이상한 행동

  7. 7

    libgdx의 box2d 버전에서 mousejoint와 관련된 이상한 오류

  8. 8

    세계 좌표로 변환 할 때 이상한 Box2D 오류

  9. 9

    b2FixtureDef.shape.SetAsArray가있는 Box2D 본문이 테트리스와 유사한 모양에서 작동하지 않음

  10. 10

    box2D 세계 단계에서 신체가 이동 한 거리를 얻는 방법은 무엇입니까?

  11. 11

    이상한 행동

  12. 12

    Box2D 이동 운동학 바디는 접촉이 전혀 없더라도 동적 바디를 함께 이동합니다.

  13. 13

    AndEngine에서 Box2d와 충돌시 수행 할 작업

  14. 14

    불안정한 b2RevoluteJoint Box2D

  15. 15

    box2d에서 동적 발사체 곡선 그리기

  16. 16

    applyLinearImpulse가 작동하지 않음 (Box2d)

  17. 17

    LIBGDX Box2D World QueryAABB가 작동하지 않음

  18. 18

    Box2d (EdgeShape) 선에 색상 추가

  19. 19

    Smart Mobile Studio에서 Box2D 개체에 색상 추가

  20. 20

    Box2D에서 탐색 (조향 동작) 궤도 대상을 중지하는 방법은 무엇입니까?

  21. 21

    box2d Javascript 예제의 간단한 일반 rayCasting

  22. 22

    Physics Body Editor를 사용한 Libgdx Box2d 충돌 감지

  23. 23

    Box2D : 이미지를 물리 몸체로 변환

  24. 24

    box2d 점이 고정물에 있는지 확인

  25. 25

    Andengine : Box2D 확장 vs 게임용 스프라이트

  26. 26

    Libgdx box2d ContactListener는 매우 결함이 있습니다.

  27. 27

    memcpy의 이상한 행동

  28. 28

    memcpy의 이상한 행동

  29. 29

    jquery로 이상한 행동

뜨겁다태그

보관