body.setTransform не работает внутри контактного прослушивателя (andEngine и box2d)

Я пытаюсь переместить тело игрока во время контакта с телепортом, но setTransform не выполняется. Это мой контактный прослушиватель

mPhysicsWorld.setContactListener(new ContactListener()
    {

        @Override
        public void beginContact(Contact contact) 
        {

            final Fixture fixtureA = contact.getFixtureA();
            final Body bodyA = fixtureA.getBody();

            final Fixture fixtureB = contact.getFixtureB();
            final Body bodyB = fixtureB.getBody();
            if(bodyA.getUserData().equals("Player") || bodyB.getUserData().equals("Player") )
            {

                for(int i = 0; i < telList.size(); i++)
                {
                    if(bodyA.getUserData() == telList.get(i))
                    {
                        Teleport tl = telList.get(i);
                        if(tl.look.getX() > pl.look.getX())
                        {
                            pl.moveTo(150, 320);
                            pl.setLinearVelocity(new Vector2(-4.5f,0));
                        }else
                        {
                            pl.moveTo(150, 320);
                            pl.setLinearVelocity(new Vector2(4.5f,0));
                        }
                        break;
                    }else if(bodyB.getUserData() == telList.get(i))
                    {
                        Teleport tl = telList.get(i);
                        if(tl.look.getX() > pl.look.getX())
                        {
                            pl.moveTo(150, 320);
                            pl.setLinearVelocity(new Vector2(-4.5f,0));
                        }else
                        {
                            pl.moveTo(150, 320);
                            pl.setLinearVelocity(new Vector2(4.5f,0));
                        }
                        break;
                    }
                }
            }
        }

        @Override
        public void endContact(Contact contact) 
        {

        }
        });

Класс прослушивателя имеет метод

public void moveTo(int x, int y)
{
    body.setTransform(new Vector2(x/32,y/32), 0);
}

и он работает нормально, но не выполняется внутри контактного прослушивателя. И я уверен, что контакт происходит, потому что он входит в блок "if" и pl.setLinearVelocity(new Vector2(-4.5f,0)); выполняется.

Заранее спасибо

7
задан Greg 30 August 2011 в 15:30
поделиться