栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

前言注意事项

静态引入(推荐)使用类的静态方法 编码

首先我们需要将Player实体保存,方便之后操作接着实现对Player的控制部分效果展示完整代码 完整项目

前言

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

注意事项

之前我们都是直接通过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实体保存,方便之后操作
	
    private Entity player;
    
    @Override
    protected void initGame() {
        // 注册实体工厂
        FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());

        // 在界面正中间生成玩家实体
        player = FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
    }
接着实现对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.*;


public class HelloWorldApp extends GameApplication {

    
    private Entity player;

    
    @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);
        });
    }


    
    public static void main(String[] args) {
        launch(args);
    }
}

完整项目

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号