Android 物理对象不随精灵移动
使用AndEngine,我想移动一个对象,以便创建精灵: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)
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比率不同
希望这有帮助