我有一个精灵,必须一直掉下来,但是当我点击屏幕时它一定会掉下来,像飞扬的小鸟一样思考。我接下来尝试

  scene.registerUpdateHandler(detect);
    IUpdateHandler detect = new IUpdateHandler() {
    @Override
    public void reset() {
    }

    @Override
    public void onUpdate(float pSecondsElapsed) {
        MoveYModifier mod2=new MoveYModifier(0.8f,plSprite.getY(),plSprite.getY()+10);
        plSprite.registerEntityModifier(mod2);
    }
};


和输入屏幕时输入代码

  @Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
    Log.d("myLogs","touch");
    MoveYModifier mod2=new MoveYModifier(0.1f,plSprite.getY(),plSprite.getY()-40);
            plSprite.registerEntityModifier(mod2);
    return false;  //To change body of implemented methods use File | Settings | File Templates.
}


但这不起作用,问题就在下。雪碧只是下去。

最佳答案

假设您有类似飞扬飞鸟的飞猪游戏。首先,您必须创建一个这样的精灵:(x位置,y位置,纹理区域,顶点缓冲区对象管理器)

然后,您将附着一个身体。您必须给您的物理世界,精灵,身体类型(您会对KinematicBody感兴趣)和夹具定义这三个物理属性。

记住要附加精灵并将身体注册到您的物理世界中。

最后,当您可以使用我提到的最后一种方法时,应该为场景注册onTouch侦听器。它将对身体施加作用力。请注意,要跳转,您需要传递负的float参数。如果您指定了重力,那么由于您的物理世界,所有运动物体都会掉落。

Sprite sPig = new Sprite(0, 155, ResourcesManager.getInstance().pig_region, vbom);
pigBody = PhysicsFactory.createBoxBody(physicsWorld, sPig, BodyType.KinematicBody, PhysicsFactory.createFixtureDef(10.0f, 0, 0));

physicsWorld.registerPhysicsConnector(new PhysicsConnector(sPig, pigBody, true, false) {
    @Override
    public void onUpdate(float pSecondsElapsed) {
      super.onUpdate(pSecondsElapsed);
      //you can do some stuff here if you want.
    });
attachChild(sPig);

//in onSceneTouchListener
pigBody.setLinearVelocity(0, -30);

//this is how i create physics world. 100f is y (down) gravitation force.
physicsWorld = new FixedStepPhysicsWorld(60, new Vector2(0, 100.0f), false);
registerUpdateHandler(physicsWorld);


PS,您将需要包含Box2D扩展。我建议您看一些教程。

10-07 20:08