3D遊戲設計與分析 牧師與魔鬼V2

2021-10-24 19:34:07 字數 2943 閱讀 5720

在動作分離版的設計,將上船、下船以及船的移動都分離出來,畫出簡略的uml圖如下:

這個類是用來控制具體的遊戲事件,有三個方法:start(),update(),和ssactionevent()。start()方法用於將ssdirector例項化,update()方法用於實現具體的遊戲事件,ssactionevent()方法則介面了issactioncallback。

public

class

ccactionmanager

:ssactionmanager

, issactioncallback

protected

newvoid

update()

else

}else

}else

if(hit.transform.tag ==

"boat"

&& scenecontroller.boatcapacity !=2)

}}base

.update()

;}public

void

ssactionevent

(ssaction source,

ssactioneventtype events = ssactioneventtype.competeted,

int intparam =0,

string strparam =

null

,object objectparam =

null

)}

這個類是用來讓船動起來

public

class

ccboatmoving

:ssaction

public

override

void

start()

public

override

void

update()

else

if(scenecontroller.boat_position ==0)

scenecontroller.

check()

;this

.destroy =

true

;this

.callback.

ssactionevent

(this);

}}

這個類是用來控制下船

public

class

ccgetoffboat

:ssaction

public

override

void

start()

public

override

void

update()

}}else

if(scenecontroller.boat[side]

.transform.tag ==

"devil")}

}}else

if(scenecontroller.boat_position ==0)

}}else

if(scenecontroller.boat[side]

.transform.tag ==

"devil")}

}}scenecontroller.boat[side]

=null;}

scenecontroller.

check()

;this

.destroy =

true

;this

.callback.

ssactionevent

(this);

}}

這個類是用來控制上船

public

class

ccgetontheboat

:ssaction

public

override

void

start()

public

override

void

update()

if(scenecontroller.priests_start[i]

== gameobject)}}

else

if(scenecontroller.boat_position ==1)

if(scenecontroller.priests_end[i]

== gameobject)}}

if(scenecontroller.find ==1)

gameobject.transform.parent = scenecontroller.boat_obj.transform;

if(scenecontroller.boat[0]

==null

&& scenecontroller.find ==1)

else

if(scenecontroller.boat[1]

==null

&& scenecontroller.find ==1)

} scenecontroller.find =0;

this

.destroy =

true

;this

.callback.

ssactionevent

(this);

}}

將所有指令碼掛載在乙個空物件即可,注意調整相機位置

太難了,就算有前人栽樹我也很難去真正理解透。最終做的這份東西是站在巨人的肩膀上各種縫縫補補弄成的。至於新加的要求裁判類,由於時間不夠並沒來得及去實現。。。日後有空一定補上。

具體**以及資源: link.

Unity 3D 牧師與魔鬼遊戲之智慧型幫助

在之前的作業中,曾經實現過牧師與魔鬼這個益智小遊戲,但是一些小朋友玩這個遊戲的時候可能有些困難 比如十年前在qq空間玩這個遊戲的我 因此,我們可以開發乙個autonext的功能,給小朋友提示一下下一步該怎麼操作。由於這次的智慧型設計比較簡單,只有三個牧師和三個魔鬼,因此我們可以使用狀態圖來幫助分析遊...

Unity3D 魔鬼與牧師遊戲記錄 MVC架構

遊戲成品圖 設定60s倒計時 60s後如果未能安全運送所有魔鬼與牧師,遊戲失敗。嘗試改進介面,對一些東西還不太熟悉。1列出遊戲中提及的事物 objects object 三個魔鬼 用白cube表示 三個牧師 用黑sphere表示 一艘船 兩個岸 2遊戲架構 iscenecontroller.cs和i...

3D遊戲引擎設計與實現(3)

經過幾天編寫,3d遊戲引擎的架構 大體架構已經搭好。下面來每個模組說明 l 引導程式 engine mm3dmain.exe l dll管理模組 engine bin mm3drun.dll l 引擎管理模組 engine bin mm3dengine.dll l ui模組 engine bin m...