JME 3 入门教程1 - HELLO SIMPLEAPPLICATION

原文链接http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_simpleapplication

前一节:安装JME3,下一节:HELLO NODE

这一节教程假定你已经下载了jMonkey Engine3,并在自选的IDE中设置妥当,且能够运行其中的样例。

准备完毕,马上就要创建属于你的第一个jMonkey Engine3游戏了!你可以在jMonkeyPlatform,NetBeans,Eclipse等任何一种IDE中学习这一系列入门教程,也可以直接在命令行中启动这些样例。

编写一个SIMPLEAPPLICATION

创建 jme3test.helloworld包,在其中创建HelloJME3.java文件。

在NetBeans中,你可以在包节点上单击右键

  •   在弹出菜单中选择New...> Java Class,这样就创建了一个新文件。
  •   输入类名:HelloJME3
  •   输入包名: jme3test.helloworld
  •   点击Finish。

 

样例代码

在HelloJME3.java文件中输入以下代码:

 package jme3test.helloworld;
 2  
 3  import com.jme3.app.SimpleApplication;
 4  import com.jme3.material.Material;
 5  import com.jme3.math.Vector3f;
 6 import com.jme3.scene.Geometry;
 7 import com.jme3.scene.shape.Box;
 8 import com.jme3.math.ColorRGBA;
 9  
10 /** Sample 1 - how to get started with the most simple JME 3 application.
11  * Display a blue 3D cube and view from all sides by
12  * moving the mouse and pressing the WASD keys. */
13 public class HelloJME3 extends SimpleApplication {
14  
15     public static void main(String[] args){
16         HelloJME3 app = new HelloJME3();
17         app.start();
18     }
19  
20     @Override
21     public void simpleInitApp() {
22         Box b = new Box(Vector3f.ZERO, 1, 1, 1);
23         Geometry geom = new Geometry("Box", b);
24         Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
25         mat.setColor("Color", ColorRGBA.Blue);
26         geom.setMaterial(mat);
27         rootNode.attachChild(geom);
28     }
29 }

启动游戏

请注意,HelloJME3类继承了com.jme3.app.SimpleApplication,而com.jme3.app.SimpleApplication则是com.jme3.app. Application的子类。每个JME3游戏都是com.jme3.app. Application的一个(直接或间接的)实例。

要运行JME3游戏,必须实例化一个以Application为基类的类,然后调用start()方法。

HelloJME3 app = new HelloJME3(); 
app.start();

通常在main方法里面完成这一步。

提示:Java高手们也可以复制SimpleApplication,将其用作模板,在自己的程序中使用。

初始化场景

这个简单的“游戏”只有一个孤零零的立方体。下面就是创建这个立方体,并为它定位、上色,然后添加到场景中的代码。(后面将详细讨论其中细节。)

public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create cube shape
        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
        geom.setMaterial(mat);                   // set the cube's material
        rootNode.attachChild(geom);              // attach the cube to the scene
    }

每个JME3游戏启动时都将自动调用一次simpleInitApp()方法。游戏启动之前,你得在simpleInitApp()方法中创建或加载游戏对象!以下是通常的流程:

1. 初始化游戏对象

    •  创建或加载所有的对象,并为它们定位。
    • 要想在场景中显示某个geometry(如box),必须将其添加到rootNode
    • 示例:加载玩家、地形、天空、敌人、障碍物,并将它们摆放在初始位置。
    2.初始化游戏变量
      • 游戏变量用于跟踪记录游戏状态。在此设置好初始值。
      •  示例:设置score0health100%,如此等等。
      3.初始化导航
      • 以下键位是默认预先设定好的“
      • WASD四处走动
      • 鼠标和上下左右键摇动摄像机
      • Esc键退出游戏

      关键之处:JME程序都有一个rootNode对象。你的游戏将自动继承获得rootNode对象。在场景中显示的对象都附加在rootNode上。换句话说,如果只创建一个对象,而不把它附加到rootNode,它就不会在场景中显示。

      小结

      寥寥数行代码不过显示了一个静态的3-D对象,不过即使如此简单,也足以让你在3D场景中畅游了。学到这里,你大概已经体会到,SimpleApplication的确是个不错的“起跑点”,它为你提供了如下便利:

      • simpleInitApp()方法,用于初始化游戏对象
      • rootNode,将你的geometry附加到rootNode,即可在场景中显示
      • 实用的默认导航设置

      真正的游戏中,你需要:

      1. 初始化game world
      2. 在事件循环中触发动作
      3. 响应用户输入

      后面的教程里,你将学到如何用jMonkeyEngine 3完成这些任务!

      继续学习Hello Node教程,这一节你将看到初始化game world(也就是secne graph,场景图)的更多细节。


      • 2
        点赞
      • 1
        收藏
        觉得还不错? 一键收藏
      • 0
        评论

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值