51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

java游戏开发入门(四) - 输入or控制

前言 {#前言}

  上一章我们创建了玩家对象,这一章我们实现对玩家的基本控制

注意事项 {#注意事项}

之前我们都是直接通过FXGL类来操作引擎,之后会全部改为引入静态方法 的方式,这也是官方推荐的方式,之前使用FXGL类的方式主要用于理解调用的方法是从哪里来的。

静态引入(推荐) {#静态引入推荐}

// import
import static com.almasb.fxgl.dsl.FXGL.*;
// class method
spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);

使用类的静态方法 {#使用类的静态方法}

// import
import com.almasb.fxgl.dsl.FXGL;
// class method
FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);

编码 {#编码}

首先我们需要将Player实体保存,方便之后操作 {#首先我们需要将player实体保存方便之后操作}

	/**
     * 玩家实体
     */
    private Entity player;
    /**
     * 初始化游戏内容
     */
    @Override
    protected void initGame() {
        // 注册实体工厂
        FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());

        <span class="hljs-comment">// 在界面正中间生成玩家实体</span>
        player = FXGL.spawn(<span class="hljs-string">"Player"</span>,FXGL.getAppWidth()/<span class="hljs-number">2</span>,FXGL.getAppHeight()/<span class="hljs-number">2</span>);
    }




接着实现对Player的控制部分 {#接着实现对player的控制部分}

  首先也是先重写 initInput 方法,控制部分的程序会在这里被加载,在这里我们实现对Player的控制,例如上下左右:

    /**
     * 初始化输入
     */
    @Override
    protected void initInput() {
        onKey(KeyCode.W,"上",()->{
            player.translateY(-5);
        });
        onKey(KeyCode.S,"下",()->{
            player.translateY(+5);
        });
        onKey(KeyCode.A,"左",()->{
            player.translateX(-5);
        });
        onKey(KeyCode.D,"右",()->{
            player.translateX(+5);
        });
    }

  此时运行程序即可操作Player移动。
  注意,此处的上下左右为操作的名称,会显示在菜单中的按键设置部分。操作时注意输入法会影响输入。

完整代码 {#完整代码}

DemoEntityFactory没有改动就不贴了.

import com.almasb.fxgl.app.GameApplication;
import com.almasb.fxgl.app.GameSettings;
import com.almasb.fxgl.dsl.FXGL;
import com.almasb.fxgl.entity.Entity;
import javafx.scene.input.KeyCode;

import static com.almasb.fxgl.dsl.FXGL.\*;


/**




* 
  @author lhDream
  \*/
  public class HelloWorldApp extends GameApplication {



  /**



  * 玩家实体
    */
    private Entity player;




  /**



  * 
    初始化设置





  * 
    @param settings
    \*/
    @Override
    protected void initSettings(GameSettings settings) {
    settings.setTitle("Hello world");
    settings.setWidth(600);
    settings.setHeight(600);



    settings.setMainMenuEnabled(true);
    settings.setGameMenuEnabled(true);
    }






  /**



  * 
    初始化游戏内容
    \*/
    @Override
    protected void initGame() {
    // 注册实体工厂
    FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());



    // 在界面正中间生成玩家实体
    player = FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
    }






  /**



  * 初始化输入
    */
    @Override
    protected void initInput() {
    onKey(KeyCode.W,"上",()->{
    player.translateY(-5);
    });
    onKey(KeyCode.S,"下",()->{
    player.translateY(+5);
    });
    onKey(KeyCode.A,"左",()->{
    player.translateX(-5);
    });
    onKey(KeyCode.D,"右",()->{
    player.translateX(+5);
    });
    }




  /**



  * main 程序的开始


  * @param args 参数
    */
    public static void main(String[] args) {
    launch(args);
    }
    }






完整项目 {#完整项目}

https://github.com/lhDream/lhDreamGameDemo/tree/master/HelloWorld

赞(1)
未经允许不得转载:工具盒子 » java游戏开发入门(四) - 输入or控制