首先我們來理解兩個概念,對於一般性游戲的設計與開發流程。通常來說,我們有一半時間花在場景設計上,設計場景,實際上很大時間就是在布置游戲的各個物體,然后,我們的另一半時間,就是在編寫關卡的邏輯(腳本)。這樣,一個完整的游戲關卡,由“場景”+“腳本”組成。如果你是一名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節點中)
(最終狀態)
這篇教程講解了如何添加一個物體,並講解了最重要最基礎的幾種操作模式,希望大家可以簡單消化下,下一篇教程將講解一些注意事項。