51工具盒子

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

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

前言 {#前言}

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

编码 {#编码}

首先我们需要一个可以创建实体的工厂 {#首先我们需要一个可以创建实体的工厂}

  创建一个属于自己的实体工厂,例如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 {#准备工作做完现在创建玩家player}

	/**
     * 初始化游戏内容
     */
    @Override
    protected void initGame() {
        // 注册实体工厂
        FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());
    <span class="hljs-comment">// 在界面正中间生成玩家实体</span>
    FXGL.spawn(<span class="hljs-string">"Player"</span>,FXGL.getAppWidth()/<span class="hljs-number">2</span>,FXGL.getAppHeight()/<span class="hljs-number">2</span>);
}


效果展示 {#效果展示}

java游戏开发入门 lhDream

完整代码 {#完整代码}

HelloWorldApp {#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 程序的开始

    • @paramargs 参数 */``publicstaticvoidmain(String[] args){ launch(args); } }

DemoEntityFactory {#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

赞(1)
未经允许不得转载:工具盒子 » java游戏开发入门(三) - 实体