【问题标题】:Box2d body OnUpdate FunctionBox2d 主体 OnUpdate 函数
【发布时间】:2013-10-27 07:37:59
【问题描述】:

我有两个身体(A,B)。我希望 B 跟随 A。我可以使用 setTransfrom() 函数将 B 位置更改为 A 位置。但是我必须在每个帧速率中更改 B 的位置。所以我必须使用像联系监听器这样的东西。当我在 Andengine 中使用普通对象时,它在下面有这个功能,而不是 contactlistener。

this.foot = new Rectangle(this.getX(), this.getY(), 8, 10, ResourcesManager.getInstance().vbom){
        @Override
        protected void onManagedUpdate(float pSecondsElapsed)
        {
           // super.onManagedUpdate(pSecondsElapsed);

            this.setPosition(body.getPosition().x*PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT+1,
                    body.getPosition().y*PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT-15);

        }
    }; 

我的意思是我可以在创建它的时候设置这种监听器。box2d body 有什么选项吗?我的意思是这样的:

this.footBody=PhysicsFactory.createBoxBody(this.mPhysicsWorld, this.foot, BodyType.DynamicBody, footFixtureDef){
        @Override
        protected void onManagedUpdate(float pSecondsElapsed)
        {
           // super.onManagedUpdate(pSecondsElapsed);

            this.setPosition(body.getPosition().x*PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT+1,
                    body.getPosition().y*PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT-15);

        }
    };

【问题讨论】:

    标签: android box2d andengine box2d-iphone jbox2d


    【解决方案1】:

    物理体的位置更新由 Box2D 库管理。但是您可以为您的场景注册一个额外的更新处理程序,并告诉 box2D 世界您希望在该更新期间完成什么。

    this.scene.registerUpdateHandler(new IUpdateHandler() {
    @Override
    public void onUpdate(float pSecondsElapsed) {
            // TODO Auto-generated method stub
            //Your code to run here!
    }
    

    因此,如果您维护一个对您世界中的物体的引用列表,您应该能够在游戏的每个滴答声中施加力或设置它们的位置。 如果你想确保在 box2D 世界步骤之前或之后更新世界,你可以事件调用

    mBox2dWorld.onUpdate(pSecondsElapsed);
    

    从您自己的更新处理程序中,而不是将世界注册为更新处理程序本身。

    这里还有一些不太实用的建议: 或者要做到这一点,你可以使用关节的 box2D 方式。我取决于您想要的以下行为。

    或者...您甚至没有将对象 B 作为 Box2D 世界的一部分,也许只是在 box2D 之外管理以下行为。它需要与东西碰撞吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多