java游戏开发入门(三) - 实体

05月08日 收藏 0 评论 1 java开发

java游戏开发入门(三) - 实体

转载声明:文章来源:https://blog.csdn.net/qq_41054313/article/details/123674550

前言
  上一章我们创建了菜单,这章开始实现具体的内容,先创建一个玩家。

编码
首先我们需要一个可以创建实体的工厂
  创建一个属于自己的实体工厂,例如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

C 1条回复 评论
雾岛残月

有没有前端入门的开发软件推荐呐?

发表于 2023-09-03 21:00:00
0 0