前言
上一章我们创建了菜单,这章开始实现具体的内容,先创建一个玩家。
编码
首先我们需要一个可以创建实体的工厂
创建一个属于自己的实体工厂,例如DemoEntityFactory 并实现EntityFactory接口
import com.almasb.fxgl.entity.EntityFactory;
/**
 * 实体工厂
 * @author lhDream
 */
public class DemoEntityFactory implements EntityFactory {
    
}
实现创建实体的方法
	/**
     * 创建玩家实体
     * @param data
     * @return
     */
    @Spawns("Player")
    public Entity newPlayer(SpawnData data){
        return FXGL.entityBuilder(data)
                // 宽 10px 高 10px 颜色黑色
                .viewWithBBox(new Rectangle(10,10, Color.BLACK))
                .build();
    }
准备工作做完,现在创建玩家Player
	/**
     * 初始化游戏内容
     */
    @Override
    protected void initGame() {
        // 注册实体工厂
        FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());
        // 在界面正中间生成玩家实体
        FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
    }
效果展示

完整代码
HelloWorldApp
import com.almasb.fxgl.app.GameApplication;
import com.almasb.fxgl.app.GameSettings;
import com.almasb.fxgl.dsl.FXGL;
/**
 * @author lhDream
 */
public class HelloWorldApp extends GameApplication {
    /**
     * 初始化设置
     * @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());
        // 在界面正中间生成玩家实体
        FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
    }
    /**
     * main 程序的开始
     * @param args 参数
     */
    public static void main(String[] args) {
        launch(args);
    }
}
DemoEntityFactory
import com.almasb.fxgl.dsl.FXGL;
import com.almasb.fxgl.entity.Entity;
import com.almasb.fxgl.entity.EntityFactory;
import com.almasb.fxgl.entity.SpawnData;
import com.almasb.fxgl.entity.Spawns;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
/**
 * 实体工厂
 * @author lhDream
 */
public class DemoEntityFactory implements EntityFactory {
    /**
     * 创建玩家实体
     * @param data
     * @return
     */
    @Spawns("Player")
    public Entity newPlayer(SpawnData data){
        return FXGL.entityBuilder(data)
                // 宽 10px 高 10px 颜色黑色
                .viewWithBBox(new Rectangle(10,10, Color.BLACK))
                .build();
    }
}
完整项目
https://github.com/lhDream/lhDreamGameDemo/tree/master/HelloWorld
本系列其他文章
java游戏开发入门(一) - HelloWorld
java游戏开发入门(二) - 菜单
java游戏开发入门(三) - 实体
java游戏开发入门(四) - 输入or控制
java游戏开发入门(五) - 碰撞机制
java游戏开发入门(六) - 变量 & UI
java游戏开发入门(七) - 计时器
java游戏开发入门(八) -图像
java游戏开发入门(九) -音效
java游戏开发入门(十) -粒子特效
 
        
        
        
       
        