我有一个精灵,必须一直掉下来,但是当我点击屏幕时它一定会掉下来,像飞扬的小鸟一样思考。我接下来尝试
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扩展。我建议您看一些教程。