原文链接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文件中输入以下代码:
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 }
Build,然后运行HelloJME3。如果弹出jme设置对话框,选择默认设置即可。
1.你将看到一个“简陋”的窗口,里面有一个3-D的立方体。
2.按WASD键或移动鼠标可以导航,从各个角度观察。
3.按Esc键退出程序。
祝贺你,运行成功!那我们是怎么做到呢?
理解代码
以下是所有JME3游戏都必须遵从的一些规则。
启动游戏
请注意,HelloJME3类继承了com.jme3.app.SimpleApplication,而com.jme3.app.SimpleApplication则是com.jme3.app. Application的子类。每个JME3游戏都是com.jme3.app. Application的一个(直接或间接的)实例。
要运行JME3游戏,必须实例化一个以Application为基类的类,然后调用start()方法。
app.start();
通常在main方法里面完成这一步。
提示:Java高手们也可以复制SimpleApplication,将其用作模板,在自己的程序中使用。
初始化场景
这个简单的“游戏”只有一个孤零零的立方体。下面就是创建这个立方体,并为它定位、上色,然后添加到场景中的代码。(后面将详细讨论其中细节。)
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.
初始化游戏变量
游戏变量用于跟踪记录游戏状态。在此设置好初始值。
示例:设置
score
为
0
,
health
为
100%
,如此等等。
- 以下键位是默认预先设定好的“
- WASD四处走动
- 鼠标和上下左右键摇动摄像机
- Esc键退出游戏
关键之处:JME程序都有一个rootNode对象。你的游戏将自动继承获得rootNode对象。在场景中显示的对象都附加在rootNode上。换句话说,如果只创建一个对象,而不把它附加到rootNode,它就不会在场景中显示。
小结
寥寥数行代码不过显示了一个静态的3-D对象,不过即使如此简单,也足以让你在3D场景中畅游了。学到这里,你大概已经体会到,SimpleApplication的确是个不错的“起跑点”,它为你提供了如下便利:
- simpleInitApp()方法,用于初始化游戏对象
- rootNode,将你的geometry附加到rootNode,即可在场景中显示
- 实用的默认导航设置
真正的游戏中,你需要:
- 初始化game world
- 在事件循环中触发动作
- 响应用户输入
后面的教程里,你将学到如何用jMonkeyEngine 3完成这些任务!
继续学习Hello Node教程,这一节你将看到初始化game world(也就是secne graph,场景图)的更多细节。