1
我試圖改變附加到加速度計移動矩形的物理物體的速度。我不能讓身體改變速度,它一旦設定就是永久的財產嗎?Body Adjustable Velocity AndEngine/Box2D
這是我populateScene:
rect = new Rectangle(220, -200, 24, 24, this.getVertexBufferObjectManager());
rect.setColor(Color.GREEN);
mScene.attachChild(rect);
ball = PhysicsFactory.createBoxBody(mPhysicsWorld, rect, BodyType.DynamicBody, droppingBoxDef);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
rect, ball));
而這正是我試圖改變速度:
@Override
public void onAccelerationChanged(AccelerationData pAccelerationData) {
int accellerometerSpeedX = (int)pAccelerationData.getX();
// accellerometerSpeedY = (int)pAccelerometerData.getY();
//Log.v("Accelerometer X Y Z: ", ""+pAccelerationData);
ball.setLinearVelocity(accellerometerSpeedX, 0);
}
沒有矩形上方的第二部分加載罰款,並有其物理體工作正確。它似乎消失,當我嘗試使用: ball.setLinearVelocity。
Body對象是類中的全局變量,所以它可以在兩種方法中引用。我曾嘗試在Populatecene中使用更新處理程序,並在其中設置了ball.setLinearVelocity,但是獲得了相同的結果。
本質上我的問題是:身體的速度可以改變後,它已經連接到物理世界?
別惹從另一個線程比AndEngine UpdateThread的physicsworld!我無法記得哪個系統線程(UIThread,SensorThread?)調用了加速度計回調,但它不是AndEngine UpdateThread,因此如果您不將該調用發送到UpdateThread,您可能會收到意外的行爲或崩潰。 – 2013-03-12 04:46:39
那我該怎麼辦?將加速計更改存儲在全局變量中並在AndEngine UpdateThread中使用該值? – 2013-03-12 16:51:57
那或'runOnUpdateThread'。 – 2013-03-12 23:03:40