Android 物理对象不随精灵移动

Android 物理对象不随精灵移动,android,sprite,andengine,Android,Sprite,Andengine,使用AndEngine,我想移动一个对象,以便创建精灵: tower1 = new Sprite(50, 150, this.tower1TextureRegion, this.getVertexBufferObjectManager()); tower1Body = PhysicsFactory.createBoxBody(physicsWorld, tower1, BodyType.KinematicBody, towerFixtureDef)

使用AndEngine,我想移动一个对象,以便创建精灵:

tower1 = new Sprite(50, 150, this.tower1TextureRegion,
            this.getVertexBufferObjectManager());
tower1Body = PhysicsFactory.createBoxBody(physicsWorld, tower1,
            BodyType.KinematicBody, towerFixtureDef);
this.physicsWorld.registerPhysicsConnector(new PhysicsConnector(tower1,
            tower1Body, true, true));

然后定义移动:

moveTower1 = new MoveXModifier(actualDuration, tower1.getX(), -150f)
     {
     @Override protected void onModifierFinished(IEntity 
     removeTower(tower1); }
     }; 
     tower1.registerEntityModifier(moveTower1);

当我运行此应用程序时,精灵正在移动,但物理对象没有移动。我做错了什么?

使用box2d,您需要移动身体,而不是精灵。你应该把精灵想象成木偶,由身体控制

使用box2d,您需要移动身体,而不是精灵。你应该把精灵想象成木偶,由身体控制

如果将精灵附加到实体,则不能再使用修改器移动它。物理世界现在基本上在位置上拥有它(也就是说,如果身体由于施加的力而移动,连接的精灵将随之移动)。只能通过对主体本身施加力来移动主体,即

tower1Body.applyLinearImpulse(impulseX, impulseY, pointX, pointY);
或者

或者线速度

tower1Body.setLinearVelocity(vX, vY);
还要注意,物理世界中的坐标与场景中的坐标不同。例如,tower1.getX()是sprite tower1场景中的坐标,但在物理世界中,身体的位置将按默认的/PIXEL\u-TO\u-METER\u比率不同


希望这有帮助。

如果将精灵附加到身体上,则不能再使用修改器移动它。物理世界现在基本上在位置上拥有它(也就是说,如果身体由于施加的力而移动,连接的精灵将随之移动)。只能通过对主体本身施加力来移动主体,即

tower1Body.applyLinearImpulse(impulseX, impulseY, pointX, pointY);
或者

或者线速度

tower1Body.setLinearVelocity(vX, vY);
还要注意,物理世界中的坐标与场景中的坐标不同。例如,tower1.getX()是sprite tower1场景中的坐标,但在物理世界中,身体的位置将按默认的/PIXEL\u-TO\u-METER\u比率不同

希望这有帮助