【问题标题】:AndEngine Box2D - Rectangular Body transform to a line?AndEngine Box2D - 矩形体转换为一条线?
【发布时间】:2013-07-07 01:01:16
【问题描述】:

我想做一个像这样的涂鸦跳跃,我创建了两个身体,一个为玩家,一个为平台,但不是在平台身体上弹跳,玩家可以在身体 Y 坐标的所有线上跳跃.不知道为什么。

    private void creerPlateformes(int n)
{
    int pX[] = new int[n];
    int pY[] = new int[n];
    pX[0] = CAMERA_WIDTH/ 2-60;
    pY[0] = 780;    
    for (int i=0;i<n;i++)
    {
        if (i!=0)
        {
            final Random r = new Random();          
            pX[i] = r.nextInt(464-16)+16;
            pY[i] = pY[i-1]-r.nextInt(200-100)+100;
        }

    plateforme[i] = new Sprite(pX[i], pY[i], mPlateformeTextureRegion, getVertexBufferObjectManager());
    plateforme[i].setScale(1);
    plateforme[i].setUserData("plateforme");
    final FixtureDef PLATEFORME_FIX = PhysicsFactory.createFixtureDef(0.0f, 0.0f, 0.0f);
    plateformeBody[i] = PhysicsFactory.createBoxBody(physicsWorld, plateforme[i], BodyType.StaticBody, PLATEFORME_FIX);
    plateformeBody[i].setUserData("plateforme");
    scene.attachChild(plateforme[i]);
    }

}

如果您需要更多代码,请告诉我,但我认为问题可能就在那里。

【问题讨论】:

  • 我无法理解发生了什么。是不是这样:玩家在没有平台的区域反弹? Y 位置似乎正确,但 X 位置不正确。是这个问题吗?
  • 是的,没错,我真的不知道为什么..
  • 这只是一个猜测,但是 Sprite "plateforme[i]" 是否包含透明像素? box 2D 使用的形状的边界框将与精灵边界框相同。
  • 是的,这个精灵包含透明像素,我尝试使用没有透明像素的精灵,但似乎不起作用..我的播放器仍然在右侧 Y 位置的所有 X 轴上弹跳
  • @SebastienServouze 你在屏幕的左/右侧有边框吗(防止玩家无限向左/右奔跑?我必须承认,我从来没有玩过涂鸦跳跃,只是得到了被电视广告无聊了 1k 次。澄清我的问题:在 x 方向上,您距离场景边界有 16px 的空间,您的播放器是否小到足以从这些孔中掉下来?

标签: box2d andengine physics platform


【解决方案1】:

正如你在 cmets 中所说的,并不是玩家的身体被移动了,而是你单独移动了精灵 ;-)

通过传感器事件移动玩家,你可以使用类似的东西

playerBody.setLinearVelocity (float vX, float vY)

x 值取决于您的传感器,y 值应该类似于您的跳跃速度恕我直言

那么你就不需要再移动精灵了,因为它会随着身体的移动而移动

【讨论】:

  • 谢谢,你解决了我的问题。就是这样!我不想无聊,但是,我还有一个小问题,我的加速度计似乎反应时间长..或者你看到的反应时间长?我使用 LinearDumping 但它并不是我想要的..
  • 嗯。我想请你把这个放在另一个问题中,因为它超出了这个问题的范围。添加一些代码,我或一些用户会尝试提供帮助 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多