【问题标题】:Andengine 2d side-scroller like marioAndengine 2d 横向卷轴喜欢马里奥
【发布时间】:2011-12-22 16:02:00
【问题描述】:

我有一个问题。 我如何使角色具有重力并可以正常行走,即我需要使用哪些功能以及如何定义固定装置?我是否需要 box2d 物理世界(我正在使用平铺地图)? 所以,如果可以的话,请告诉我如何使用andengine 制作像马里奥这样的2d 横向滚动平台游戏。

我的代码我正在尝试做什么:

    // Character:
    charactersprite = new Sprite(40, 0, this.character);
    charactersprite.setScaleX(0.65f);

    this.mScene.setOnSceneTouchListener( this);

    // PHYSICS
    final FixtureDef characterfictur = PhysicsFactory.createFixtureDef(0, 0f,0.5f);


    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);
    final PhysicsHandler physicsHandler = new PhysicsHandler(charactersprite);
    charactersprite.registerUpdateHandler(physicsHandler);


    // 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)); // Don't look at there
            //body.applyLinearImpulse(new Vector2(2,0), body.getPosition());

            }else{
                //body.applyLinearImpulse(new Vector2(0,0), body.getPosition());
                physicsHandler.setVelocity(0, 0);
                body.setLinearVelocity(new Vector2(0,body.getLinearVelocity().y)); // Don't look at there 
            }
            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,1f);
                            PhysicsFactory.createBoxBody(this.mPhysicsWorld, rect, BodyType.StaticBody, boxFixtureDef);
                            rect.setVisible(false);
                            mScene.attachChild(rect);
                     }
             //}
     }

}

所以它不能正常工作。那么我做错了什么?请帮我。 非常感谢!

【问题讨论】:

  • 你应该在 GameDev 网站 (gamedev.stackexchange.com) 上问这个

标签: andengine


【解决方案1】:

你需要的东西:

  • BoundCamera(为您的地图设置边界)
  • 追逐实体(你的玩家,所以相机会跟随你的实体)
  • FixtureDef 弹性很小(防止玩家突然停在地面上)
  • 为您的静态对象(如墙壁等)创建箱体
  • 跳跃之类的东西 - 只需使用 setLinearVelocity

上面提到的每个“功能”都有其示例 - 只需检查和引擎示例。

在这个帖子中,我提供了更多关于如何编写此类游戏的提示:CLICK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    相关资源
    最近更新 更多