添加遊戲功能
通過上邊的學習,我們已經學會了添加事件,教程到這,已經很長了,我們會發現教程看起來很囉嗦,太細,做起來一下子就完了,所以接下來我們稍微簡化下。記住添加條件或動作的步驟如下:
1、按兩下添加新事件,點擊Add action連結添加一個動作。
2、在對話方塊中按兩下要添加條件/動作的物件
3、選取要添加的條件/動作
4、如果有需要的話,輸入參數
接下來教程中以下面的格式來表述:
Add condition System -> Every tick
Add action Player -> Set angle towards position -> X: Mouse.X,Y: Mouse.Y
讓角色可以射擊
當玩家點擊的時候,可以發射子彈。這可以通過Spawn an object動作來實現,該動作在同樣的位置和角度(相對於角色)創建新的物件實例。子彈的Bullet movement屬性將會使它向前飛出。製作如下事件:
條件:Mouse->On click->Left clicked(the default) //滑鼠->點擊->左擊(默認)
動作:Player->Spawn another object->For Object,choose the Bullet //Play物件->產生另外的物件->物件,選擇子彈層,輸入1(“Main”圖層),Image point(子彈的發射起點)保持默認為0。如下:
如果你運行遊戲,你將看到子彈從角色圖片的中心發出,並不是從槍口發出。我們來修改下,在工程或物件面板中右擊player物件選擇Edit animations編輯動畫。
在彈出的圖片編輯器中,選擇Set origin and image points工具
看到image points對話方塊,物件的原點以紅點顯示
這是物件的原點(如果你旋轉物件,將繞著這個點),點擊綠色的+號按鈕添加一個點,該點以藍點顯示。我們在角色圖片槍口位置處左擊,將該點放置於槍口位置:
關閉圖片編輯器,按兩下事件表中早前添加的Spawn an object動作,更改Image point為1.在面板中可以看到序號的,默認的原點為0,其他添加的一次1,2。。。等。如下:
運行遊戲。此時子彈已經修改為從槍口發射。此時,子彈沒有做其他任何事。接下來我們來添加碰撞事件,用來消滅敵人。
添加事件如下:
條件:Bullet->On collision with another object->pick Monster。 //子彈->於其他物件碰撞->選擇Monster怪物。
動作:Monster->Destroy //怪物->消滅
動作:Bullet->Spawn another object->Explosion,layer 1 //在圖層1 碰撞的位置產生新物件-爆炸特效
動作:Bullet->Destroy //子彈銷毀
爆炸特效
運行遊戲,嘗試射擊一個怪物,我們可以看到碰撞發生,爆炸特效也產生了,杯具的是,有個大大的黑色邊框,好難看!
不用擔心,我們可以去掉黑框,在工程面板或者物件面板點擊Explosion object爆炸特效物件。在它的屬性面板裡設置Effect屬性為Additive(疊加,玩過PS的知道,黑色顏色值為0,疊加後就不起作用,就看不到了,具體的去百度下吧)。再次嘗試遊戲可以看到,完美了
讓怪物聰明一點
(添加怪物智慧AI,專業說法,囧,本例可沒那麼高深)
當下怪物只會向右移動。我們來讓他們更有趣些。首先讓他們產生在隨機的位置。
條件:System->On start of Layout //系統->畫布啟動時
動作:Monster->Set angle->random(360) //怪物->設置角度->0-360隨機度數
Condition: System -> On start of Layout
Action: Monster -> Set angle -> random(360)
此時,怪物依然移出畫布,再也看不到,接著我們再來修改,讓怪物移動邊緣處的時候,自動往回移動,並且添加智慧,讓怪物朝著玩家角色移動(自然是角色沒掛的時候)。
條件:Monster->Is outside layout //判斷怪物是否要離開畫布
動作:Monster->Set angle toward position->For X,Player.X - for Y,Player.Y //設置怪物朝向角色的座標
再次運行遊戲。此時你可以看到怪物在畫布裡朝著不同的方向移來移去,最終都會朝著角色圍過來。這個智慧的行為咱們不程式設計看不到代碼(就算程式設計也太難,囧,要不也不找這軟體了哈),將就著看吧,似乎不錯了!
此我們的角色還是無敵的,怪物卻是太脆落了,子彈一碰就掛了,接著我們通過instance variables執行個體變數來修改這些。