JMonkeyEngine3.X SDK教程——基本操作篇(1)


  首先我们来理解两个概念,对于一般性游戏的设计与开发流程。通常来说,我们有一半时间花在场景设计上,设计场景,实际上很大时间就是在布置游戏的各个物体,然后,我们的另一半时间,就是在编写关卡的逻辑(脚本)。这样,一个完整的游戏关卡,由“场景”+“脚本”组成。如果你是一名web前端开发人员或app(Android/IOS)开发人员,应该清楚,一个完整的页面,其实由两部分组成:1.先画界面2.写界面的逻辑。用这个例子来比喻上面这段话最合适,比如我们为一个游戏设计了一个关卡level1,那么首先创建一个level1场景,然后再为level1编写相应的逻辑(脚本)即可完成这个level1。

  简而言之,接下来所有的教程都是为了让读者能够学会以上述的流程进行游戏开发,重要的是思想,而不仅局限与JMonkey,你会发现,主流引擎都是这种模式(如果你用过Unity或Unreal或Godot,你就会理解我说得)。

  这是这个教程系列的第一个正式章节,主要教读者了解SDK的基本操作。

  首先,我们创建一个名为Basic operation的场景,如下:

 

 

   接着,我们鼠标选择名为“Scene Root"的节点,右键,可以看到一些选项,如下:

 

 

   下面一一解释每个选项:

  • Add Spatial(添加一个Spatial对象,Spatial是所有空间对象的父类,一个Spatial可能是一个具体的几何模型对象,也可能是一个逻辑对象(如Node))
  • Add Control(添加一个控制器,非常重要,提供了添加游戏脚本的接口)
  • Add User Data(只能对Spatial对象进行操作,可以给选中的Spatial对象添加一些自定义属性)
  • Tools(只能对Spatial对象进行操作,后面详解)
  • Controls(提供所见所得调试Control的操作,但是操作不好的话bug严重,甚至导致你的scene损坏)

  接下来,一一了解这些选项的功能。

  首先是Add Spatial,如上图所见,我们可以添加“Node","Particel Emitter","AudioNode","Terrain","Skybox","NavMesh","Primitives"。一下就列出这么多东西,似乎有点措手不及。没关系,我们简单看一遍大概就懂了。

  我们打开刚刚创建的空场景,选择Scene Root,鼠标右键,选择“Primitives",然后选择一个Box,会发现,添加了一个Box到Scene Root节点上,我们先别急着研究其他对象,先来看看如何对一个Box进行空间操作——选中锚点,移动,旋转和缩放。

  (这里说一句,在“选中锚点”模式下,按住鼠标左键并移动鼠标,是绕当前“锚点”进行旋转浏览场景;按住鼠标右键或按住鼠标滚动并移动鼠标,是拖动整个视点浏览场景;滚动鼠标滚轮在锚点之间进行视点缩放。而在其他三个模式下,按住鼠标滚轮或同时按住Ctrl+鼠标左键并移动鼠标是绕当前“锚点”进行旋转浏览场景,同时按住Ctrl+鼠标滚轮或同时按住Ctrl+鼠标右键并移动鼠标是拖动整个视点浏览场景,缩放视点仍然是滚动鼠标滚轮。

  确保鼠标选中这个箭头:

 

 

   进入“选中模式”,这个模式的作用下,鼠标左键单击某个Geometry对象(只能单击可见物体,对于逻辑节点不可单击),可以设置当前“锚点”为单击的位置点,如下:

 

   此时“锚点”设置到了红框位置,我们再次按住鼠标左键并移动端鼠标,可以看到场景绕这个点进行旋转浏览。这很有用,因为我们浏览场景某个很远的部分时,“锚点”将帮助我们正确观察场景。

  接下来,我们分别尝试点击如下几个图标,分别表示进入“平移选中物体”,“旋转选中物体”和“缩放选中物体”:

 

 

 

 

 

   具体怎么操作,我想不用我多说吧,看图很直观,比如进入“平移选中物体”模式,我们鼠标移到那三个箭头位置并按住,然后拖动就可以移动物体,同理理解其他模式。

  一些快捷键,确保我们进入“选中描点”模式,然后鼠标焦点在

 

   这个窗口中,即3D窗口中(如何确保鼠标焦点在3D窗口中呢?在这个窗口中单击下鼠标即可),然后切换到英文输入法,按下G键可以进入“平移”模式,按下R键可以进入“旋转”模式,按下S键可以进入“缩放”模式。

  一些注意事项:如果你要保存场景,请点击Scene Root节点,如果你的鼠标焦点在3D窗口上,这个时候你按下Ctrl+S,会因为S键而进入“缩放”模式,而不是保存当前场景。

  接下来,在添加一个Sphere,默认下,Box和Sphere在(0,0,0)位置,我们把Sphere移到其他位置,现在的问题是,如何移动Sphere?

  很简单,如果我们要对某个物体进行操作(平移,旋转或缩放),先在场景列表节点选中该物体,我们要对Sphere进行操作,所以选中Sphere,如下:

 

   然后,我们进入“平移”模式,将Sphere移到其他位置,如下:

 

   这种方式来选择一个物体的一个原因是,两个物体重叠在一起了,比如Box和Sphere放在(0,0,0),然后Box比Sphere大,导致你无法在3D窗口中直接选择Sphere对象,所以你可以在场景列表中选择Sphere对象。

  另一种选择对象的方式是确保勾选以下这个按钮:

 

   进入“Geometry选择"模式,这里“Geometry选择"模式只能配合“选择锚点”模式。进入“Geometry选择"模式后,还需要进入“选择锚点”模式,然后单击鼠标右键,即可在3D窗口中选中某个几何对象。

  平移,旋转和缩放的另一种方案——直接修改数值,我们选中一个Geometry,比如这里选中Box,可以看到在SDK的属性面板上列出了该物体的属性,其中包括Local Translation(位置属性),Local Rotation(朝向属性),Local Scale(缩放比例属性):

 

   你可以直接修改这些数据来达到平移,旋转和缩放的精确数值控制。

  现在,如果我们要同时操作Box和Sphere,比如要整体移动Box和Sphere,该怎么办呢?很简单,得益于JMonkey基于场景图(事实上几乎所有流行引擎都基于场景图)管理对象,我们可以很方便的实现这个要求。

  我们看到Box和Sphere挂在Scene Root这个节点上,你大概猜到了,没错,选中Scene Root(由于Scene Root不是可见物体,所以你只能在场景列表中进行选中,而不能通过“Geometry选择"模式进行选中),你会看到如下效果:

 

   这里,出现了一个蓝色边框盒,这叫包围盒(包围盒有多种,这里不进行详细讲解),表示这个Scene Root是一个这样的对象:由Sphere和Box组成。

  接下来,我们可以自由的进入“平移”,“旋转”或“缩放”模式操作Scene Root,这样就可以对Sphere和Box进行统一修改。

  如果我们不想通过修改Scene Root来实现统一修改Sphere和Box的状态,那么,我们可以通过添加一个额外的逻辑节点,并把Sphere和Box挂到这个节点上,然后选中这个节点进行“平移”,“旋转”和“缩放”模式即可完成同样的要求,如下:

 

 (先创建一个Node对象,然后修改名称为BoxAndSpeher)

 

 (按住ctrl+鼠标左键,选中Box和Sphere,然后托入到BoxAndSphere节点中)

 

 (最终状态)

  这篇教程讲解了如何添加一个物体,并讲解了最重要最基础的几种操作模式,希望大家可以简单消化下,下一篇教程将讲解一些注意事项。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM