Android 重力和加速计工作不顺畅Box2D Andengine

Android 重力和加速计工作不顺畅Box2D Andengine,android,box2d,andengine,game-development,Android,Box2d,Andengine,Game Development,我是安卓游戏的新手,经过4天的头脑风暴,我陷入了一些愚蠢的境地。我正在做一个游戏,球需要从顶部落在两个移动的红色条之间。在球上施加了一些重力,球需要在加速计的帮助下向左或向右移动(通过倾斜手机) 如图所示,我想在doodle Jump游戏中以doodle移动的加速度移动球,但重力不允许我的代码这样做,直到球以重力速度落下。此外,我能够显示一个可移动的红色条,但第二个红色条不显示。 有人能告诉我我的代码出了什么问题吗?我不能理解,因为我缺乏安德林的知识。提前谢谢 代码如下: package com

我是安卓游戏的新手,经过4天的头脑风暴,我陷入了一些愚蠢的境地。我正在做一个游戏,球需要从顶部落在两个移动的红色条之间。在球上施加了一些重力,球需要在加速计的帮助下向左或向右移动(通过倾斜手机)

如图所示,我想在doodle Jump游戏中以doodle移动的加速度移动球,但重力不允许我的代码这样做,直到球以重力速度落下。此外,我能够显示一个可移动的红色条,但第二个红色条不显示。 有人能告诉我我的代码出了什么问题吗?我不能理解,因为我缺乏安德林的知识。提前谢谢

代码如下:

package com.example.mygame;


import org.andengine.engine.camera.Camera;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.andengine.entity.modifier.MoveXModifier;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.scene.background.Background;
import org.andengine.entity.sprite.Sprite;
import org.andengine.extension.physics.box2d.PhysicsConnector;
import org.andengine.extension.physics.box2d.PhysicsFactory;
import org.andengine.extension.physics.box2d.PhysicsWorld;
import org.andengine.extension.physics.box2d.util.Vector2Pool;
import org.andengine.input.sensor.acceleration.AccelerationData;
import org.andengine.input.sensor.acceleration.IAccelerationListener;
import org.andengine.opengl.texture.TextureOptions;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.ui.activity.BaseGameActivity;

import android.hardware.SensorManager;
import android.view.Display;

import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.FixtureDef;


public class GameActivity extends BaseGameActivity implements IAccelerationListener{

    Scene scene;
    protected static int CAMERA_HEIGHT;
    protected static int CAMERA_WIDTH;
    BitmapTextureAtlas  BallTexture;
    ITextureRegion BallTextureRegion;
    BitmapTextureAtlas RedBarTexture;
    ITextureRegion RedBarRegion;
    Sprite RedBar,RedBar2;
    PhysicsWorld physicsworld;
    Sprite ball;
    Body body;

    Body RedBarBody;
    int gap;
    Body RedBarBody2;
    @SuppressWarnings("deprecation")
    @Override
    public EngineOptions onCreateEngineOptions() {
        final Display display=getWindowManager().getDefaultDisplay();
        CAMERA_HEIGHT=display.getHeight();
        CAMERA_WIDTH=display.getWidth();
        Camera gameCamera=new Camera(0, 0, CAMERA_WIDTH,CAMERA_HEIGHT);
        EngineOptions options=new EngineOptions(true,ScreenOrientation.PORTRAIT_FIXED,new RatioResolutionPolicy(CAMERA_WIDTH,CAMERA_HEIGHT),gameCamera);
        return options;
    }

    @Override
    public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback)throws Exception 
    {
        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
        BallTexture=new BitmapTextureAtlas(this.getTextureManager(),256,256,TextureOptions.BILINEAR);
        BallTextureRegion=BitmapTextureAtlasTextureRegionFactory.createFromAsset(BallTexture, getAssets(),"ball.png",0,0 );
        RedBarTexture=new BitmapTextureAtlas(this.getTextureManager(), 16, 128);
        RedBarRegion=BitmapTextureAtlasTextureRegionFactory.createFromAsset(RedBarTexture, getAssets(), "red.png",0,0);
        BallTexture.load();
        RedBarTexture.load();
        this.enableAccelerationSensor(this);
        pOnCreateResourcesCallback.onCreateResourcesFinished();
    }

    @Override
    public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)throws Exception 
    {
        scene=new Scene();  
        physicsworld=new PhysicsWorld(new Vector2(0,SensorManager.GRAVITY_EARTH), true);    
        this.scene.setBackground(new Background(255, 23, 23));
        this.scene.registerUpdateHandler(this.physicsworld);
        pOnCreateSceneCallback.onCreateSceneFinished(this.scene);

    }

    @Override
    public void onPopulateScene(Scene pScene,OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception
    {
        ball=new Sprite(CAMERA_WIDTH/2,10,BallTextureRegion,this.mEngine.getVertexBufferObjectManager());
        RedBar=new Sprite(CAMERA_WIDTH-14,CAMERA_HEIGHT-77,RedBarRegion,this.mEngine.getVertexBufferObjectManager());
        RedBar2=new Sprite((RedBar.getX()+70),CAMERA_HEIGHT-77,RedBarRegion,this.mEngine.getVertexBufferObjectManager());
        final FixtureDef BallFixture=PhysicsFactory.createFixtureDef(10.0f, 0.2f,0.0f);
        final FixtureDef BarFixture=PhysicsFactory.createFixtureDef(0.0f,0.0f,0.0f);
        body=PhysicsFactory.createCircleBody(this.physicsworld,ball, BodyType.DynamicBody, BallFixture);
        RedBarBody=PhysicsFactory.createBoxBody(physicsworld, RedBar, BodyType.StaticBody,BarFixture);
        RedBarBody2=PhysicsFactory.createBoxBody(physicsworld, RedBar2, BodyType.StaticBody,BarFixture);
        MoveXModifier movex=new MoveXModifier(18.0f, CAMERA_WIDTH-14, 0);
        RedBar.registerEntityModifier(movex);
        RedBar2.registerEntityModifier(movex);
        this.scene.attachChild(ball);
        this.scene.attachChild(RedBar);
        this.scene.attachChild(RedBar2);
        physicsworld.registerPhysicsConnector(new PhysicsConnector(ball, body, true, true));

        pOnPopulateSceneCallback.onPopulateSceneFinished();
    }



    @Override
    public void onAccelerationChanged(AccelerationData pAccelerationData) {
        // TODO Auto-generated method stub
        body.applyForce(new Vector2(pAccelerationData.getX(), 0),body.getWorldCenter());
    }

    @Override
    public void onAccelerationAccuracyChanged(AccelerationData pAccelerationData) {
        // TODO Auto-generated method stub


    }
}

你应该把你的代码部分贴在你声明的红色条上,我们可以说你的代码出了什么问题。我已经编辑了这个问题,添加了代码。加速计和重力让人沮丧。你的第二个红色条在屏幕右侧的外面。1.摄像机宽度-14->2。相机宽度-14+70->56像素外是的,但我在x修改器的帮助下给了它一个运动。