android - 车身可调速度AndEngine/Box2D

标签 android box2d andengine

我试图通过加速度计的移动来改变连接到矩形的物理体的速度。我无法让 body 改变速度,一旦设置它是否是永久属性?

这是在我的 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 对象是类中的全局变量,因此可以在两个方法中引用它。我尝试在 Populatescene 中使用更新处理程序并在其中设置 ball.setLinearVelocity,但是结果相同。

本质上我的问题是:在连接到物理世界后,物体的速度是否可以改变?

最佳答案

通常在 Box2D 中您不设置速度,而是向物体施加冲量或力以使其加速或减速。
对于您上面描述的内容,您不应该使用 setLinearVelocity。尝试使用

ball.applyForce(new Vector2(accellerometerSpeedX, 0), ball.getWorldCenter());

 boxBody.applyAngularImpulse(new Vector2(accellerometerSpeedX, 0));

关于android - 车身可调速度AndEngine/Box2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193382/

相关文章:

Android - 如何检索 SQL 格式的日期时间而不考虑电话日历设置(奇怪的字符问题)

android - 未使用导航组件将 fragment 添加到后台堆栈

xcode - 如何将 Box2d 添加到现有的 Xcode/Cocos2d 项目

android - 将缓动函数应用于 PathModifier?

java - android BindService() 空指针异常

android - 如何使带有自定义背景图像的按钮在Android中显示点击动画

iphone - cocos2d中如何设置动画的帧

actionscript-3 - 什么是 Box2d?我如何使用它来制作 Flash 游戏?

java - 无法在加载场景之前附加文本。安卓和引擎

ANDROID ANDENGINE -- 改变 Action 时的 Sprite