中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 多媒體制作 > Flash 區(qū)塊游戲開發(fā)
Flash MX 2004 pro 幫助 CHM 版 回到列表 如何防止SWF文件被反編譯
 Flash 區(qū)塊游戲開發(fā)

作者:qhwa 時(shí)間: 2004-05-22 文檔類型:原創(chuàng) 來自:藍(lán)色理想

第 1 頁 歡迎
第 2 頁 為什么用方塊?
第 3 頁 地圖
第 4 頁 關(guān)于地圖的東西
第 5 頁 創(chuàng)建方塊
第 6 頁 再談?wù)剠^(qū)塊原型的定義
第 7 頁 英雄/主角
第 8 頁 鍵盤控制的移動(dòng)
第 9 頁 碰撞檢測(cè)
第 10 頁 芝麻開門-地圖切換
第 11 頁 跳躍
第 12 頁 騰云駕霧
第 13 頁 梯子
第 14 頁 愚蠢的敵人
第 15 頁 更多關(guān)于敵人的東西
第 16 頁 射擊
第 17 頁 拾取物品
第 18 頁 浮動(dòng)區(qū)塊
第 19 頁 卷屏
第 20 頁 未完待續(xù) | coming soon

愚蠢的敵人

我們的英雄已經(jīng)很完美了,但是他很無聊,唯一能做的只是來回走。我們需要?jiǎng)e的東西。不是食物,不是飲料,也不是美女,我們需要的是——一些敵人。敵人就像加在湯里的鹽,缺了它,一切都索然無味。好的游戲中會(huì)有聰明的敵人,但是我們從一些最笨的敵人開始做起。他們所做的僅僅是來回走,順便檢測(cè)是不是碰上英雄了。

到目前為止,我們已經(jīng)有了兩類對(duì)象:英雄和方塊。英雄由玩家操縱,方塊不會(huì)運(yùn)動(dòng)。敵人應(yīng)該類似英雄,唯一不同的是,我們不能操作他們移動(dòng),我們將會(huì)賦予他們一定的智能。我們將要做兩種不同的敵人,第一種上下走,第二種會(huì)左右走。他們都會(huì)在撞到墻上后回頭繼續(xù)走。(真夠笨的:)

在你開始構(gòu)造你的超級(jí)復(fù)雜的敵人之前,再想想一些東西。許多游戲?qū)嶋H上沒有用到敵人,有的雖然用到了,也不是很聰明。Flash并不是非常強(qiáng)大,如果你的游戲中有100個(gè)敵人,他們都聰明地使用A*算法跟蹤英雄,我真的懷疑是否有這么強(qiáng)大的機(jī)器能運(yùn)行。如果可以的話,最好讓一些敵人愚蠢些,一些聰明些,結(jié)果玩家可能就會(huì)忽略了他們的差別。另外,我們都想要比別人聰明,所以就讓玩家感覺這種樂趣好了 :)

準(zhǔn)備敵人

同創(chuàng)建英雄一樣,創(chuàng)建一個(gè)剪輯放置敵人(如果忘了怎么做,在回頭看看)。他們也有4幀,分別是左、上、下、右的動(dòng)畫。同樣的,他們也要導(dǎo)出為“enemy1”和“enemy2”(在庫面板中設(shè)置linkage)。現(xiàn)在我們添加一個(gè)enemies數(shù)組:

myEnemies = [
[0],
[[1, 6, 1]],
[[2, 1, 3]]
];

看得出來,我們?cè)趍ap1放了1個(gè)敵人。
[1,6,1]:第一個(gè)1代表敵人的類型(hoho~我們有好多中敵人得)
6,1是他開始的位置。創(chuàng)建地圖的時(shí)候,我們會(huì)把他放到x=6,y=1的方塊上。同理在map2中也有一個(gè)敵人,但是類型是2,位置是1,3。你可在一個(gè)地圖中放置多個(gè)敵人,但是千萬記住,不要把他們嵌到墻里面!記得要放在一個(gè)可通行的方塊上面。

讓我們聲明一些敵人的模板:

game.Enemyp1= function () {};
game.Enemyp1.prototype.xMove=0;
game.Enemyp1.prototype.yMove=1;
game.Enemyp1.prototype.speed=2;

game.Enemyp2= function () {};
game.Enemyp2.prototype.xMove=1;
game.Enemyp2.prototype.yMove=0;
game.Enemyp2.prototype.speed=2;

他們的代碼看起來很相似,但是他們動(dòng)作就不一樣了。Enemyp1會(huì)上下走,因?yàn)樗膟Move屬性是1;但是Enemyp2只會(huì)水平移動(dòng)。你可以設(shè)置xMove/yMove屬性為1或-1或0。不過請(qǐng)不要同時(shí)把這兩個(gè)屬性都設(shè)置成非零值,除非你希望敵人能走對(duì)角線。

你也可以把xMove和yMove都設(shè)置成0,這樣的敵人沒有移動(dòng)的能力,也許你會(huì)用到。

speed屬性聲明了敵人移動(dòng)的速度。不同的敵人可以有不同的速度。


擺放敵人

在buildMap函數(shù)中,介于創(chuàng)建門和創(chuàng)建英雄的代碼之間,加入如下代碼:

var enemies = myEnemies[game.currentMap];
game.currentEnemies = enemies.length;
for (var i = 0; i<game.currentEnemies; ++i) {
  var name = "enemy"+i;
  game[name]= new game["Enemyp"+enemies[i][0]];
  game.clip.attachMovie("enemy"+enemies[i][0], name, 10001+i);
  game[name].clip=game.clip[name];
  game[name].xtile = enemies[i][1];
  game[name].ytile = enemies[i][2];
  game[name].width = game.clip[name]._width/2;
  game[name].height = game.clip[name]._height/2;
  game[name].x = (game[name].xtile *game.tileW)+game.tileW/2;
  game[name].y = (game[name].ytile *game.tileH)+game.tileH/2;
  game[name].clip._x = game[name].x;
  game[name].clip._y = game[name].y;
}

這段代碼什么意思?首先我們得到當(dāng)前地圖的敵人數(shù)組,轉(zhuǎn)存為enemies數(shù)組,然后把敵人的個(gè)數(shù)傳給currentEnemies,接著遍歷敵人數(shù)組,把他們都安置好。
(記住,雖然這里只用到了一個(gè)敵人,但是可以有更多的)

變量name的值是新創(chuàng)建的敵人的名字,“enemy0”,“enemy1”,“enemy2”……依次類推。然后我們從相應(yīng)的模板(剛剛聲明過)創(chuàng)建新的對(duì)象:

game[name]= new game["Enemy"+enemies[i][0]];
從敵人數(shù)組(enemies[i])的第一個(gè)元素(enemies[i][0])得到敵人的類型,比如是1,然后通過enemyp1模板創(chuàng)建一個(gè)敵人。

下面的幾行是取得坐標(biāo),然后把敵人放置到該處。ok,這就是buildMap函數(shù)該變動(dòng)的地方。

但是,你也許會(huì)大聲喊出來,但是他還不會(huì)動(dòng)!好吧,我們就讓他動(dòng)起來


移動(dòng)敵人

同人一樣,敵人也需要腦子,我們就寫個(gè)enemyBrain函數(shù)好了:

function enemyBrain () {
for (var i = 0; i<game.currentEnemies; ++i) {
  var name = "enemy"+i;
  var ob = game[name];
  getMyCorners (ob.x+ob.speed*ob.xMove, ob.y+ob.speed*ob.yMove, ob);
  if (ob.downleft and ob.upleft and ob.downright and ob.upright) {
    moveChar(ob, ob.xMove, ob.yMove);
  } else {
    ob.xMove = -ob.xMove;
    ob.yMove = -ob.yMove;
  }
  var xdist = ob.x - char.x;
  var ydist = ob.y - char.y;
  if (Math.sqrt(xdist*xdist+ydist*ydist) < ob.width+char.width) {
    removeMovieClip(_root.tiles);
    _root.gotoAndPlay(1);
  }
}

}

正如你所看到的,我們又要遍歷數(shù)組了。我們把enemies數(shù)組的每個(gè)元素存到ob,當(dāng)i等于0的時(shí)候,ob就是enemy0。

然后我們調(diào)用getCorners函數(shù),檢查敵人是不是碰到了障礙物,如果upleft、downleft、upright、downright都是true,則說明可以行走。我們就可以放心的調(diào)用moveChar函數(shù),同時(shí)傳遞xMove、yMove給moveChar函數(shù)。我們以前用moveChar都是移動(dòng)英雄的,現(xiàn)在移動(dòng)敵人也沒有任何區(qū)別,我說過,我們可以重復(fù)使用許多函數(shù)的。

如果英雄碰到了障礙物,我們就讓xMove和yMove都取相反數(shù),比如原來xMove是1,就取-1,這樣敵人就會(huì)掉頭移動(dòng)。如果yMove原來是0,那么相反數(shù)還是0,沒有影響。

最后一部分檢測(cè)英雄和敵人的距離,看是不是碰到了一起,如果是,oh,game over。當(dāng)然,游戲不可能這么簡(jiǎn)單的結(jié)束掉,你可以減少英雄的生命值或者做別的處理,這些都由你自己完成。我們使用的計(jì)算距離的公式用的是“勾股定理”,如果你需要精確到象素級(jí)別的接觸,你應(yīng)該用hitTest,但是這里沒有必要這么精確。別離敵人太近,否則你會(huì)死掉的。:-)

我們需要不停的調(diào)用這個(gè)函數(shù),所以在detectKeys函數(shù)中加入:

_root.enemyBrain();

這就是一個(gè)敵人,很愚蠢的敵人。接下來我們要做更聰明的敵人,他們象人一樣四處巡邏,碰到障礙物后會(huì)改變方向繼續(xù)巡邏。hoho,繼續(xù)吧~

下載本例的源文件

出處:藍(lán)色理想
責(zé)任編輯:qhwa

上一頁 梯子 下一頁 更多關(guān)于敵人的東西

◎進(jìn)入論壇Flash專欄版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
Flash 酷站獵手
中文ID3亂碼問題MX解決方案
用AS2解決中文ID3的亂碼
Flash常用效果-移動(dòng)模糊效果
Flash MX 2005 制作環(huán)境預(yù)覽
作者文章 更多作者文章
中文ID3亂碼問題MX解決方案
Flash 區(qū)塊游戲開發(fā)
Flash 中如何顯示清晰的字體
JavaScript 和 Flash 的通信
在 ListBox 組件中應(yīng)用 HTML
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:14/201個(gè)記錄/頁 轉(zhuǎn)到 頁 共20個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2