騰云駕霧
到目前為止,我們已經(jīng)做出了阻止英雄通過(guò)墻的效果。很有趣,不是嗎?許多游戲還有一類叫做“云”的方塊,角色門(mén)可以左右穿行他們,甚至可以從下面跳上去, 但是當(dāng)下落的時(shí)候,他們確是不可通行的,英雄會(huì)停在上面?催@個(gè)例子:
你看到區(qū)別了吧?讓我們來(lái)看看圖。 這個(gè)是普通的磚墻方塊,英雄不能從任何角度穿過(guò)它:
再來(lái)看云。除了上面,英雄可以從任何方向穿過(guò)。 如果英雄從上面掉下來(lái),我們讓他停在上面。
首先我們要做一些帶有“cloud”屬性的方塊, 如果cloud屬性是true,這個(gè)方塊就是一塊“云”。定義:
game.Tile4 = function () {}; game.Tile4.prototype.walkable = true; game.Tile4.prototype.cloud = true; game.Tile4.prototype.frame = 4;
它的walkable屬性是true,意味著英雄可以穿行過(guò)去。 為了讓英雄能站到上面,我們需要?jiǎng)?chuàng)建新的函數(shù)。
function checkIfOnCloud (ob) { var leftcloud = game["t_" + ob.downY + "_" + ob.leftX].cloud; var rightcloud = game["t_" + ob.downY + "_" + ob.rightX].cloud; if ((leftcloud or rightcloud) and ob.ytile != ob.downY) { return(true); } else { return(false); } }
我們檢測(cè)英雄的左下角和右下角的方塊是不是云,只要有一塊是,就返回true。否則返回false。
現(xiàn)在我們需要在兩個(gè)地方調(diào)用這個(gè)函數(shù): moveChar函數(shù)中往下運(yùn)動(dòng)的時(shí)候,還有fall函數(shù)中檢測(cè)英雄是不是繼續(xù)下落的時(shí)候。
在moveChar函數(shù)中if (diry == 1)的后面原來(lái)有這句:
if (ob.downleft and ob.downright) { ...
改成這樣,加上云的檢測(cè):
if (ob.downleft and ob.downright and !checkIfOnCloud (ob)) { ...
在fall函數(shù)中也一樣,把這個(gè):
if (ob.downleft and ob.downright) { ...
換成:
if (ob.downleft and ob.downright and !checkIfOnCloud (ob)) { ...
只有左下方和右下方都可通行,而且下面的不是云,英雄才能往下掉。
enjoy :)
下載源文件
出處:藍(lán)色理想
責(zé)任編輯:qhwa
上一頁(yè) 跳躍 下一頁(yè) 梯子
◎進(jìn)入論壇Flash專欄版塊參加討論
|