王薇 王德貴
克隆是指生物體通過體細(xì)胞進(jìn)行的無性繁殖,以及由無性繁殖形成的基因型完全相同的后代個(gè)體。在XRmaker 中克隆可以理解為模型的復(fù)制,也稱為拷貝。
當(dāng)我們需要很多同樣的模型、執(zhí)行一樣的程序時(shí),如果先把模型搭建好,很難分清哪個(gè)模型不說,也非常占用內(nèi)存空間,更容易宕機(jī),所以我們在需要的時(shí)候,克隆本體,然后再適時(shí)刪除,這樣既可以達(dá)到效果,也可以很好地利用內(nèi)存空間了。XRmaker 的克隆模塊在控制中。
1. 克隆自己
這是“動(dòng)物_15”克隆自己,復(fù)制一個(gè)原模型,克隆模型和原模型重合。
2. 實(shí)例
重復(fù)執(zhí)行10 次,“動(dòng)物_15”克隆自己,并等待1 秒。運(yùn)行后10 個(gè)模型與原模型位置重疊,看起來還是一個(gè)。我們需要繼續(xù)編程控制,才能按我們設(shè)計(jì)的思路,呈現(xiàn)出來。
1. 克隆體控制
從上面的實(shí)例看出,克隆體需要程序控制,才能達(dá)到更好的效果。比如讓克隆體在一定范圍內(nèi)的位置出現(xiàn)。比如“當(dāng)作為克隆體啟動(dòng)時(shí)”,設(shè)置位置為一定范圍。讓這10 個(gè)克隆體,出現(xiàn)在不同的位置上。
2. 模型克隆時(shí)原型處理
如果事先設(shè)計(jì)好了模型位置,在克隆時(shí),原模型會(huì)一直停在那里,影響整體效果,所以這個(gè)時(shí)候可以設(shè)置為“存在”或“不存在”。其實(shí)就是隱藏和顯示的功能。因此一般對本體“設(shè)為不存在”?!爱?dāng)作為克隆體啟動(dòng)時(shí)”“設(shè)為存在”。這樣在運(yùn)行程序時(shí),才不會(huì)看到原型,而只能看到克隆體了。
程序設(shè)計(jì)時(shí)根據(jù)具體情況,來刪除克隆體。
1. 刪除本克隆體
克隆體按程序運(yùn)行以后,如果不需要了一定要?jiǎng)h除,否則克隆體增多時(shí),會(huì)占用大量內(nèi)存,電腦就會(huì)宕機(jī)。復(fù)制克隆體后,會(huì)記憶克隆順序,進(jìn)行刪除。
2. 清除所有克隆體
在程序運(yùn)行過程中,如果克隆體全部完成運(yùn)行,則根據(jù)需要可以“清除所有克隆體”,釋放內(nèi)存。
3. 自動(dòng)刪除
如果在程序運(yùn)行時(shí),沒有刪除克隆體,則當(dāng)程序關(guān)閉后,克隆體也會(huì)自動(dòng)刪除。
“已有克隆體總數(shù)”是一個(gè)運(yùn)算積木塊,運(yùn)算結(jié)果為浮點(diǎn)數(shù)。
五、案例——駿馬奔騰
1. 資源列表
2. 設(shè)計(jì)思路
隨機(jī)時(shí)間隨機(jī)位置出現(xiàn)馬的克隆體,在出現(xiàn)后開始奔跑。奔跑一定時(shí)間后,則刪除克隆體,可釋放內(nèi)存空間。
3. 程序設(shè)計(jì)
(1)克隆
設(shè)置馬為不存在,重復(fù)執(zhí)行馬克隆自己,設(shè)置0.01 到0.05 時(shí)間隨機(jī)。開始本馬設(shè)置不存在,是因?yàn)樗恢痹谠嘏?,就不需要看它了,只看克隆體就可以了。
(2)駿馬奔騰
當(dāng)每個(gè)克隆體出來以后,必須讓它出現(xiàn)在畫面上,為了能更直觀地觀看效果,設(shè)置為一定范圍內(nèi)的隨機(jī)位置,然后一直向前奔跑,可以看到駿馬奔騰的大場面。
(3)刪除克隆體
馬的克隆體運(yùn)行15 秒后刪除,釋放內(nèi)存空間。
4. 小結(jié)
克隆,在程序設(shè)計(jì)時(shí)經(jīng)常用到,主要是掌握了基本方法,就運(yùn)用自如了。