【问题标题】:Physics editor not allowing scaling sprites ( Andengine)物理编辑器不允许缩放精灵(Andengine)
【发布时间】:2014-05-09 05:56:27
【问题描述】:

在我的游戏中,我使用物理编辑器制作精灵。我把它缩放到像这样的大尺寸

 sprite.setScale(screenwidth/20 / sprite.getWidth());

并像这样将其添加到物理体中

 Body = PhysicsFactory.createBoxBody(physicsWorld, sprite, BodyType.DynamicBody, FIXTURE_DEF);

现在在游戏中,缩放后的 sprite 看起来很大,但附加到它的物理实体很小。(没有随着缩放而增加大小)。

那么现在该怎么做才能缩放身体本身。 请给我一些建议。

【问题讨论】:

    标签: android andengine sprite physics game-physics


    【解决方案1】:
    1. 首先,将以下夹具定义插入到 onPopulateScene() 方法中:

      FixtureDef BoxBodyFixtureDef =
      PhysicsFactory.createFixtureDef(20f, 0f, 0.5f);
      
    2. 接下来,放置以下创建三个矩形及其对应的代码 上一步中夹具定义后的实体:

      Rectangle staticRectangle = new Rectangle(cameraWidth /
      2f,75f,400f,40f,this.getVertexBufferObjectManager());
      staticRectangle.setColor(0.8f, 0f, 0f);
      mScene.attachChild(staticRectangle);
      PhysicsFactory.createBoxBody(mPhysicsWorld, staticRectangle,
      BodyType.StaticBody, BoxBodyFixtureDef);
      
      Rectangle dynamicRectangle = new Rectangle(400f, 120f, 40f, 40f,
      this.getVertexBufferObjectManager());
      dynamicRectangle.setColor(0f, 0.8f, 0f);
      mScene.attachChild(dynamicRectangle);
      Body dynamicBody = PhysicsFactory.createBoxBody(mPhysicsWorld,
      dynamicRectangle, BodyType.DynamicBody, BoxBodyFixtureDef);
      mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
      dynamicRectangle, dynamicBody);
      
      Rectangle kinematicRectangle = new Rectangle(600f, 100f,
      40f, 40f, this.getVertexBufferObjectManager());
      kinematicRectangle.setColor(0.8f, 0.8f, 0f);
      mScene.attachChild(kinematicRectangle);
      Body kinematicBody = PhysicsFactory.createBoxBody(mPhysicsWorld,
      kinematicRectangle, BodyType.KinematicBody, BoxBodyFixtureDef);
      mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
      kinematicRectangle, kinematicBody);
      
    3. 最后,在上一步的定义之后添加以下代码来设置 我们运动体的线速度和角速度:

    kinematicBody.setLinearVelocity(-2f, 0f);
    kinematicBody.setAngularVelocity((float) (-Math.PI));

    【讨论】:

    • 是的,我注册了物理连接器,但缩放不起作用。
    • 我用官方教程步骤更新了我的答案,可能会抱怨你的实施,如果没有问题,你应该联系和引擎支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多