跳转至内容

JMonkeyEngine:初学者

25% developed
来自 Wikibooks,开放的世界,开放的书籍

JME 3 教程 (1) - Hello SimpleApplication

[编辑 | 编辑源代码]

前一页: 安装 JME3,下一页: Hello Node

先决条件: 本教程假设您

您已准备好创建第一个 jMonkeyEngine3 游戏!您通常可以在此入门系列中使用任何集成开发环境 (IDE) 中使用这些教程,例如 jMonkeyPlatform、NetBeans、Eclipse 或直接从命令行运行它们。在以下内容中,我们将使用 jMonkeyPlatform。

编写一个 SimpleApplication

[编辑 | 编辑源代码]

创建一个jme3test.helloworld包和一个文件HelloJME3.java放在里面。

在 jMonkeyPlatform 中,您右键单击 Source Packages 节点

  • 选择新建… > Java 类来创建一个新文件。
  • 输入一个类名HelloJME3
  • 输入一个包名jme3test.helloworld
  • 点击完成。

示例代码

[编辑 | 编辑源代码]

将 HelloJME3.java 文件的内容替换为以下代码

package jme3test.helloworld;
 
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
 
/** Sample 1 - how to get started with the most simple JME 3 application.
 * Display a blue 3D cube and view from all sides by
 * moving the mouse and pressing the WASD keys. */
public class HelloJME3 extends SimpleApplication {
 
    public static void main(String[] args){
        HelloJME3 app = new HelloJME3();
        app.start(); // start the game
    }
 
    @Override
    public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create cube shape at the origin
        Geometry geom = new Geometry("Box", b);  // create cube geometry from the shape
        Material mat = new Material(assetManager,
          "Common/MatDefs/Misc/Unshaded.j3md");  // create a simple material
        mat.setColor("Color", ColorRGBA.Blue);   // set color of material to blue
        geom.setMaterial(mat);                   // set the cube's material
        rootNode.attachChild(geom);              // make the cube appear in the scene
    }
}

构建并运行 HelloJME3 类。如果弹出一个 jme 设置对话框,请确认默认设置。

  1. 您应该看到一个简单的窗口,显示一个 3D 立方体。
  2. 使用 WASD 键和鼠标在周围导航。
  3. 按 Escape 键关闭应用程序。

恭喜,它成功了!我们是怎么做到的呢?

理解代码

[编辑 | 编辑源代码]

上面的代码初始化了场景,并启动了游戏。

理解术语

[编辑 | 编辑源代码]
您想要做什么
您在 JME3 术语中如何表达
您想要创建一个立方体。 您创建一个 Geometry,它有一个 1x1x1 的 Box 形状。
您想要使用蓝色。 您创建一个 Material,它有一个蓝色的 Color 属性。
您想要将立方体涂成蓝色。 您设置 Geometry 的 Material。
您想要立方体出现在场景中。 您将立方体附加到 rootNode。

初始化场景

[编辑 | 编辑源代码]

在 Java 中,创建一个蓝色立方体如下所示

    public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create cube shape at the origin
        Geometry geom = new Geometry("Box", b);  // create cube geometry from the shape
        Material mat = new Material(assetManager,
          "Common/MatDefs/Misc/Unshaded.j3md");  // create a simple material
        mat.setColor("Color", ColorRGBA.Blue);   // set color of material to blue
        geom.setMaterial(mat);                   // set the cube's material
        rootNode.attachChild(geom);              // make the cube appear in the scene
    }

simpleInitApp()方法中,您在游戏开始之前创建或加载所有游戏对象。该simpleInitApp()方法在每个 JME3 游戏开始时自动调用一次。

一个典型的 JME3 游戏有以下初始化过程

  1. 您初始化游戏对象
    • 您创建或加载对象并对其进行定位。
    • 您通过将对象附加到rootNode.
    • 来使它们出现在场景中
  1. 示例:加载玩家、地形、天空、敌人、障碍物,并将它们放置在它们开始的位置。
    • 您初始化变量
    • 您将变量设置为它们的初始值。
    • 您想要使用变量来跟踪游戏状态。示例:score设置为 0,将health
  1. 设置为 100%,等等。
    • 您初始化键和鼠标操作
      • 默认情况下,以下输入绑定是预先配置的
      • W、A、S、D 键 - 在场景中移动
      • 鼠标移动和箭头键 - 旋转相机
    • Escape 键 - 退出游戏
    • 添加您自己的键和鼠标点击。

示例:点击射击,按空格键跳跃,等等。

开始游戏

[编辑 | 编辑源代码]HelloJME3.java 类扩展了com.jme3.app.SimpleApplication,它是com.jme3.app.ApplicationHelloJME3.java 类扩展了.

的子类。每个 JME3 游戏都是要运行 JME3 游戏,您首先实例化您的SimpleApplication类的实例,然后调用它的start()

    public static void main(String[] args){
        HelloJME3 app = new HelloJME3();
        app.start(); // start the game
    }

方法

通常,您从 Java 应用程序的 main() 方法启动游戏。

结论

[编辑 | 编辑源代码]

这短短几行代码只是显示了一个静态的 3D 立方体。您可以在这个 3D 场景中四处导航。

  • 您已经了解到,SimpleApplication 是一个很好的起点,因为它为您提供了simpleInitApp()一个
  • 您已经了解到,SimpleApplication 是一个很好的起点,因为它为您提供了rootNode方法,您可以在其中创建对象。
  • 方法,您可以在其中将对象附加到场景中以使其可见。

有用的默认输入设置,您可以使用它们在场景中进行导航。

  1. 在开发游戏应用程序时,您现在将需要
  2. 初始化您的游戏世界,
  3. 在事件循环中触发操作,

响应用户输入。

在以下教程中,您将学习如何使用 jMonkeyEngine 3 完成这些任务。


继续学习Hello Node 教程,我们将首先向您展示有关如何初始化游戏世界的更多详细信息,也称为场景图。

创建一个 JME3 项目
华夏公益教科书