WorldEdit的//g指令-高級用法

本篇教程主要講解的是//g在生成形狀時對坐標(biāo)系的旋轉(zhuǎn)、伸縮的變換操作,及對方塊數(shù)據(jù)值的高級應(yīng)用。
因此本篇教程是建立在會基礎(chǔ)使用//g指令的基礎(chǔ)上的,如果你還不會使用//g指令可以先到MCBBS的教程上學(xué)習(xí)。(最下方相關(guān)鏈接)
變量
在//g中默認(rèn)有一些變量:x、y、z、data、type。
你也可以設(shè)定一個自己的變量
例:r=sqrt(x^2+y^2) 這樣你就獲得了一個變量 r ,它的值還可以根據(jù)x、y的值的不同而改變。
伸縮變換
伸縮和平移
利用伸縮變換我們可以對坐標(biāo)系的某個或幾個軸進(jìn)行伸長或縮短。
比如我們可以將一個圓壓成一個橢圓、同理也可以將一個球壓縮為橢球。
舉例:
//g -c stone x^2+z^2<=16^2&&y==0
這是一個在y=0平面上以16為半徑的圓。
當(dāng)我們對X軸進(jìn)行壓縮可以得到:
//g -c planks (x=2*x);x^2+z^2<=16^2&&y==1
這是一個y=1平面上的半長軸長為16,半短軸長為8的橢圓。

可以看到我們的指令只多了一個 (x=2*x); 這一部分他的作用是讓X坐標(biāo)都縮小到原來的1/2。
我們也可以同時改變多個軸,比如我們可以同時再加入 (y=y-5); 這樣整個圖形就會向y軸正方向上平移5個單位。
這時部分玩家可能已經(jīng)意識到了,這樣的變換是有順序的,也就是對于同一個軸的變換,先平移再伸縮和先伸縮再平移是不一樣的。
也可能有觀眾還不明白,這里先賣個關(guān)子,講一下變換的合并,可以有助于順序的理解。
對于 (x=x+5);(x=2*x); 這樣對同一個軸多長變換的式子我們可以對其進(jìn)行合并,上述的式子可以合并為 (x=2*x+10); 也就是遵循從左到右的變換順序,可以將上一個式子的變換帶入下一個式子。即(x=2*(x+5)); 。
因此變換的順序就顯現(xiàn)出來了。
(x=x+5);(x=2*x); 變?yōu)?nbsp;(x=2*x+10);
(x=2*x);(x=x+5); 變?yōu)?(x=2*x+5);
旋轉(zhuǎn)變換
與伸縮變換的格式差不多,旋轉(zhuǎn)變換的格式是 rotate(軸1, 軸2, 弧度);
這里的 軸1 和 軸2 是x、y、z中不同的兩個,順序無所謂,其作用是標(biāo)記一個旋轉(zhuǎn)的平面。
例如:rotate(x,y,pi/4); 的意思是將xy平面繞z軸旋轉(zhuǎn)45°,至于旋轉(zhuǎn)的方向可以記為:逆著旋轉(zhuǎn)軸的正方向看,以順時針旋轉(zhuǎn)。
圖例://g -h -c stone rotate(x,y,pi/4);(20-sqrt(x^2+z^2))^2+y^2<5^2

同樣你也可以旋轉(zhuǎn)多次,先繞z軸轉(zhuǎn),再繞y軸轉(zhuǎn)……
于是又出現(xiàn)了順序難題——旋轉(zhuǎn)變換與伸縮變換之間的影響。
這里舉例兩個操作:
順時針旋轉(zhuǎn)90°
向上平移3格
情況①:先旋轉(zhuǎn)后平移。
情況②:先平移后旋轉(zhuǎn)。

可以看到,旋轉(zhuǎn)的結(jié)果雖然相同,但最終位置截然不同。
無論是哪一種變換其直接影響的是內(nèi)部的坐標(biāo)系。因此對于接下來附加的坐標(biāo)判斷語句也有影響。
根據(jù)坐標(biāo)的數(shù)據(jù)值變化
我們可以用 data=(number); 來設(shè)定方塊的數(shù)據(jù)值,也可以利用判斷語句來玩點(diǎn)花樣。
例:
//g -h -c wool data=(y<0?0:1);(20-sqrt(x^2+z^2))^2+y^2<5^2

同樣變換之間會收到影響


還有一個 type=(); 可以供我們使用
例:
//g -h -c wool type=(y<0?42:57);(20-sqrt(x^2+z^2))^2+y^2<5^2

注:此時指令中原本的羊毛并沒有顯現(xiàn)出來,這是因?yàn)樵谂袛嗾Z句對選區(qū)內(nèi)的全部方塊總會返回true或false,因此不會有空位置留給羊毛。
同樣判斷語句內(nèi)可以使用邏輯符號連接,例:type=(x<0||z<0?42:57);
應(yīng)用
部分來自官方wiki

//g -h -c 35:15 rotate(x,z,y*pi/32);(x=x-17);(z=0.7*z);x^2+z^2<8^2


相關(guān)鏈接
//generate 指令研究基礎(chǔ) http://www.mcbbs.net/thread-535283-1-1.html
官方wiki //generate頁面 http://wiki.sk89q.com/wiki/WorldEdit/Generation#Arbitrary_shapes