Физическое тело не следует за PathModifier - PullRequest
1 голос
/ 15 марта 2012

У меня есть спрайт с телом. Я хотел бы переместить спрайт по пути. Я попытался сделать это с помощью PathModifier, и спрайт перемещается как следует, но его тело не соответствует позиции спрайтов.

Могу ли я переместить спрайт и тело вместе? Мне действительно нужно вычислять скорости для пути и применять их к объекту тела, потому что это кажется довольно сложным?

Спрайт инициализируется так

  ...
  this.sprite = new Sprite(this.x, this.y, textureRegion);
  this.rectangleBody = PhysicsFactory.createBoxBody(
        physicsWorld,
        this.sprite,
        BodyDef.BodyType.StaticBody,
        this.fixtureDef);
  pPhysicsConnector = new PhysicsConnector(this.sprite, rectangleBody, true, false);
  physicsWorld.registerPhysicsConnector(pPhysicsConnector);
  scene.attachChild(this.sprite);

, а затем переехал с этим кодом

     Shape shape = entity.getShape();
     Float[] reverseXPath = ArrayUtils.clone(xPath.toArray(new Float[xPath.size()]));
     ArrayUtils.reverse(reverseXPath);
     Float[] reverseYPath = ArrayUtils.clone(yPath.toArray(new Float[yPath.size()]));
     ArrayUtils.reverse(reverseYPath);
     SequenceEntityModifier oneSequence = new SequenceEntityModifier(
           new PathModifier(
                 duration,
                 new PathModifier.Path(
                       ArrayUtils.toPrimitive(xPath.toArray(new Float[xPath.size()])),
                       ArrayUtils.toPrimitive(yPath.toArray(new Float[yPath.size()]))),
                 IEaseFunction.DEFAULT),
           new PathModifier(
                 duration,
                 new PathModifier.Path(
                       ArrayUtils.toPrimitive(reverseXPath),
                       ArrayUtils.toPrimitive(reverseYPath)),
                 IEaseFunction.DEFAULT));
     shape.registerEntityModifier(new LoopEntityModifier(oneSequence));

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Я думаю, вы найдете этот пост полезным

http://www.andengine.org/forums/post28936.html

0 голосов
/ 28 февраля 2014

перемещать спрайт по пути, обновлять тело в this.scene.registerUpdateHandler (новый IUpdateHandler (), как здесь

...