Анденегин 2d прокрутка боковых движений персонажа - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть скрипт здесь:

final FixtureDef characterfictur = PhysicsFactory.createFixtureDef(0.5f, 0.1f,0.1f); // Maybe other fixture?

this.mScene.registerUpdateHandler(this.mPhysicsWorld);

final Body body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, charactersprite, BodyType.DynamicBody, characterfictur);

this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(charactersprite, body, true, false));
mScene.attachChild(charactersprite);

createUnwalkableObjects(mTMXTiledMap);
// HUD
HUD my = new HUD();
Sprite forward = new Sprite( 50, CAMERA_HEIGHT - 170, forwardr) {
    @Override
    public boolean onAreaTouched(TouchEvent pEvent, float pX, float pY) {
        if(!pEvent.isActionUp()) {
            charactersprite.getTextureRegion().setFlippedHorizontal(false);
            body.setLinearVelocity(new Vector2(CHAR_MOVING_SPEED,body.getLinearVelocity().y)); // Velocity
            //body.applyLinearImpulse(new Vector2(2,0), body.getPosition());
        } else {
            //body.applyLinearImpulse(new Vector2(0,0), body.getPosition());
            body.setLinearVelocity(new Vector2(0,body.getLinearVelocity().y)); // LinearVelocity
        }
        return false;

    }
};

и немного вперед:

private void createUnwalkableObjects(TMXTiledMap map) {
// Loop through the object groups

    for(final TMXObjectGroup group: map.getTMXObjectGroups()) {

        //if(group.getTMXObjectGroupProperties().containsTMXProperty("Zeme", "true")){
            // This is our "wall" layer. Create the boxes from it

        for(final TMXObject object : group.getTMXObjects()) {

            final Rectangle rect = new Rectangle(object.getX(), object.getY(),object.getWidth(), object.getHeight());
            final FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(0, 0,3f);
            PhysicsFactory.createBoxBody(this.mPhysicsWorld, rect, BodyType.StaticBody, boxFixtureDef);
            rect.setVisible(false);
            mScene.attachChild(rect);
        }
        //}
    }
}

Итак, когда я перемещаю персонажа, он движется очень странно. Это горит, когда гуляет. Так что, может быть, мне нужно поменять приборы или использовать другой метод перемещения?

1 Ответ

1 голос
/ 25 апреля 2012

Я бы предложил использовать fixedPhysicsWorld и fixedStepEngine. Это избавит от «дрожания». Также, когда уровень начинается впервые, вы можете захотеть иметь «Готово!» подсказка, которая ждет несколько секунд, чтобы позволить физическому движку разогнаться, поскольку он имеет тенденцию запускаться немного медленнее, а затем ускоряется.

...