java - AndEngine、PhysicsWorld 没有更新?

标签 java android andengine

我不完全确定我做错了什么。我之前已经多次编写过这段代码,没有出现任何问题。问题是物理世界似乎没有更新,我不知道为什么!现在我有一个 gameScene 类,它扩展了一个普通场景,这是 onCreate 方法:

@Override
    public void create() {


        ParallaxBackground background = new ParallaxBackground(0, 0, 0);
        background.attachParallaxEntity(new ParallaxEntity(0, new Sprite(0, 0, res.BasicBackground, res.vbom)));
        this.setBackground(background);

        test = new Sprite(0, 0, res.GrassRegion, res.vbom);
        FixtureDef fix = PhysicsFactory.createFixtureDef(10f, 0f, 10f);
        Body bod = PhysicsFactory.createBoxBody(physicsWorld, test, BodyType.DynamicBody, fix);

        attachChild(test);



        physicsWorld = new PhysicsWorld(new Vector2(SensorManager.GRAVITY_EARTH, SensorManager.GRAVITY_EARTH), false);


        physicsWorld.registerPhysicsConnector(new PhysicsConnector(test, bod, true, true));
        this.registerUpdateHandler(physicsWorld);


    }

(我删除了很多不必要的东西)我只有一个基本的测试 Sprite 来确保物理功能正常工作(但事实并非如此)。该应用程序运行没有任何错误,只是 Sprite 不会移动,这让我认为这是物理世界更新的问题。

如您所见,我将重力设置为在 X 和 Y 方向上加速。我这样做是因为我认为由于某种原因它可能无法在一个方向上发挥作用。我在想也许我必须在主要 Activity 中设置要更新的场景?但我不记得我的任何其他应用程序必须这样做。感谢任何帮助,谢谢:)

最佳答案

不,this.registerUpdateHandler(physicalsWorld); 就可以了。尝试添加这个:

physicsWorld = new PhysicsWorld(new Vector2(0, AHC.WORLD_GRAVITY), false) {
    @Override
    public void onUpdate(float pSecondsElapsed) {
        super.onUpdate(pSecondsElapsed);
    }
};

并在 onUpdate 中放置一个断点或 Log.i(TAG, "hey"); 来检查它是否命中




编辑: 尝试注册一个“普通”UpdateHandler,您可以通过两种方式实现:

public class YourGameActivity implements IUpdateHandler{
    ...

    private void yourSetupMethod(){
        registerUpdateHandler(this);
    }

    @Override
    public void reset() {}

    @Override
    public void onUpdate(float pSecondsElapsed) {
        Log.i(TAG, "hey");
    }
}

或者您可以创建一个实现 IUpdateHandler 的类,然后:

public class YourGameActivity{
    private MyClassThatImplementsIUpdateHandler mInstance;
    ...

    private void yourSetupMethod(){
        registerUpdateHandler(mInstance);
    }
}

都是一样的。
尝试一下,看看它是否记录了某些内容,如果由于某种原因您看不到日志,请使用断点来确定。

关于java - AndEngine、PhysicsWorld 没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27814860/

相关文章:

java - 你如何为 MySQL X DevAPI 使用 Java 连接池?

Java提取字符串列表中的每个HTML内容

android - 如何避免android View 膨胀异常?

Android studio - AndEngine ndk编译错误

java - AndEngine动态改变TMX Tiled Map

java - 当我的应用程序运行时,硬件音量按钮不起作用

javascript - 用户 ACTION_VIEW Intent 在 APP 中打开 URL

Android libc.so 崩溃?

java - 如何在java中创建outlook任务请求

android - 发送和接收数据报包