在介紹前,我先放上我們網站的連結(http://sl.weco.net/)、專題文件與LSL程式碼(還未整理),有興趣可以去看和打包下載。
而因為我們所有的物件與程式都有share with group,所以只要是weco的學生都可以更改,只要別改爛就好……
首先,在SL開發有個很重要的重點,就是物件與物件傳遞訊息的方式,我把這些整理起來成以下三篇文章:
【訊息傳遞—前言與Chat】
【訊息傳遞—Link Message】
【訊息傳遞—HTTPRequest】
了解完資訊是怎溝通後,我一一分批介紹必備的Event功能。
因為我們是做第一人稱射擊遊戲,所以一定要有個封閉的場地,因此要讓玩家到達我們封閉的場地,有個很重要的功能,就是傳送(Teleport),因此可以參考以下這篇文章:
【Teleport(傳送)】
而在玩我們的遊戲時,必須要觸碰遊戲選單,因此一定要處理觸碰(Touch)的Event,所以請看以下這篇文章:
【Event—Touch】
而因為我們的遊戲是屬於單人的,所以有時間上的限制,故,一定要有Timer這個Event,關於這個Event請看這篇文章:
【Event—Timer】
那,我們的怪物是如何感應追蹤玩家與感受到傷害的呢?
我們是利用Seonsor去感應,再利用一個非常簡單的程式碼llApplyImpulse(vector force, integer local),這程式會讓被設定為Physical的物件開始推動,force就是力量的方向,而local是傳入布林值,當TRUE時他是以該物件坐標系統為主,FALSE的話就是以Second Life整個坐標系統為主,老實說我也沒比較過這兩個的不同,不太好講,畢竟這程式碼是直接參考wiki上的程式的,所以整個程式必須要搭配Sensor,寫出這樣的程式碼:
sensor(integer total)
{
llSetStatus(STATUS_PHYSICS,TRUE);
//object moves physically
llApplyImpulse(-llVecNorm(llGetPos() - llDetectedPos(0)) * forward_para * llGetMass(), FALSE);
//move to target
}//end state searching sensor(integer total)
只要寫下以上程式碼,那物件就會以很好玩地方式來追你唷。
Sensor的用法可參考以下這篇文章:
【Event—Sensor】
至於感受傷害,當然是讓物件感到碰撞(Collision)的event:
【Event—Collision】
至於怪物的特效,其中火魘(Fire Mare)的招式就是利用的分子系統,分子系統可參考這篇文章:
【ParticleSystem(分子系統)】
其實機器人的程式有很多,可以參考紅色wiki這個條目。大至上是分成兩種,一種是非物理性質的移動(如我們怪物的瞬移,就是用llSetPos(vector pos))和物理性質的移動(如上面有用到的)。
最後玩家不是要穿上裝備嗎?那穿上裝備或戴上能量砲都要有反應,前者是加防禦,後者是要發射武器,這兩個都有用到attach event,可參考:
【Event—Attach】
由於發射武器是要進入第一人稱模式,那這方面的程式碼,我們是參考了LSL紅色wiki這個條目。
我們的專題差不多就是這樣了,如果到了最後要寫文件的時候,千萬別參考我們的目錄,因為我們寫了200頁,導致那裡做得有一點隨便。而那200頁有2/3是程式碼,只是因為我每個程式碼都有流程圖,所以才想放上,加上程式碼又沒縮排,所以才搞到200多頁= ="因此不見得厚就是好……我只是單純地想紀念而已XD~
相關連結:
啥SL—【給初心者的話……前言與應用】
啥SL—【給初心者的話……專題開發可能的方向……】
沒有留言:
張貼留言