發表文章

shiva3D 塔防大戰 part4

圖片
設定敵人移動狀態 1.匯入貼圖FatFireMove001、FatFireMove002、FatFireMove003 2.將三張貼圖移至GameEditor資源區 3.設定敵人AI(EnemyAI) 4.並加入敵人移動狀態機(Move) 5.撰寫呼叫敵人移動的動畫程式 6.將TextureAnimationAI及EnemyAI加入Enemy模型 7.加入移動定位變數,並在動畫一開始設定變數值域 8.動畫執行時加入移動到定點程式 敵人發動攻擊 1.載入貼圖(BombFly及FatFireBomb001-003),並將肥肥圖放置到GameEditor資源區 2.製作Bomb模型及材質(Bomb_m) 3. 新增攻擊狀態 Attack 4.切換跑步至攻擊狀態( Move_onLoop()),並新增丟炸彈狀態ThrowBomb 5.蓄勢待發( Attack_onLoop())

shiva3D 塔防大戰 part3

圖片
銷毀敵人 1.將欲銷毀的物件(Arrow、Enemy)套入感測器 2.於ArrowAI內新增碰撞事件並撰寫銷毀程式 3.於MainAI新增onHitEnemy處理敵人數量刪減的動作 4.於ArrowAI之onSensorCollisionBegin()加入呼叫onHitEnemy事件處理 新增動畫AI-TextureAnimationAI 1.加入變數 2.新增取得貼圖名稱函數 GetTextureName 3.新增動畫處理程式處理開始動畫部分 4.新增動畫處理程式處理結束動畫部分 5.新增動畫處理程式處理每個影格執行轉變部分

shiva3D 塔防大戰 part2

圖片
設定主角移動 設定黃忠標籤 設定黃忠變數 在一開始(onInit)即取得黃忠物件 滑鼠按下後呼叫轉換函數,並且將黃忠移動到對應的y軸 設定弓箭 將弓箭加入GameEditor使其可以動態呼叫 呼叫弓箭 建立弓箭移動AI(ArrowAI) 將弓箭移動AI套用至弓箭模型 設定肥肥 將肥肥模型(Enemy)放到GameEditor的模型作為動態物件 在MainAI加入新增敵人的函數CreateEnemy() 撰寫產生敵人的程式碼 設定敵人延遲時間變數(nDelay,預設為0)及敵人目前已在場景內數量(nCount,預設0) 設定自動產生敵人及自動判斷程式碼,並檢視是否有每兩秒出現一隻敵人

shiva3D 塔防大戰 part1

圖片
場景設定 建立專案 建立遊戲 匯入關卡背景貼圖 於AmbienceEditor設定背景貼圖 建立場景 調整攝影機(X:0,Y:0,Z:65) 主角設定 匯入黃忠貼圖(Hero.png) 建立模型→形體→平面體(XY平面,+Z軸為法向量),Hero 建立Hero模型材質(Hero_m,效果貼圖為Hero.png、建立動態燈光,自發光7f7f7f) 將黃忠移置場景內,並調整到原點 畫面設定 畫面尺寸調整為iPad橫向1024*768 調整攝影機位置(Z:6.5) 調整黃忠位置,(X:-2.8) 撰寫場景AI 建立主程式(MainAI) 將MainAI加入GameEditor主程式 新增onInit並撰寫設定當前場景程式 建立敵人(Enemy)與弓箭(Arrow)模型 撰寫操作程式 轉換2D的座標至3D的座標

shiva3D 坦克大戰 part3

圖片
坦克開火 1.設定bFire變數(布林,預設false) 2.新增onFilre事件 3.在onFire事件加入判斷開火狀態 4.在onKeyboardKeyDown(kKeyCode)裡加入開火使用按鍵判斷 5.在onKeyboardKeyUp(kKeyCode)裡加入開火按鍵放開判斷 6.匯入子彈包裝檔 (Bullet.ste) 7.設定場景砲管位置的標籤(Tank_fire_position_tag) 8.將子彈包裝檔設為動態物件,須先將子彈模組放入GameEditor內的模型 9.撰寫子彈的產生方式 10執行時按下空白鍵,查看是否子彈已上膛 BulletAI (子彈發射AI) 1.新增BulletAI作為子彈發射功能 2.於BulletAI內加入onEnterFrame事件 3.撰寫子彈發射程式碼 3.套用BulletAI至Bullet模組內 4.執行時發現子彈發射的角度有問題 5.調整子彈發射角度,並加入按鍵連續發射程式碼 動態物件(子彈)消除 1.設定牆壁感應器 2.幫子彈添加感應器 3.在BulletAI加入是見碰撞處理器onSensorCollisionBegin() 4.撰寫碰撞感應消除程式碼 5.執行時若子彈發射太快也會被消除 6.調整感應代碼 坦克履帶動畫 1.建立變數nPedrail,預設值為0 2.對坦克的履帶(Tank_pedrail)加入標籤(Tank_pedrail_tag) 2.於前進onForward()事件內加入履帶動畫 3.於後退onBack()事件內加入履帶動畫 計算子彈發射數量 1.新增HUD (Tank_HUD) 2.新增元件BulletNum(Z順序:128,框及背景為0,反鋸齒) 3.onInit()撰寫程式碼,將HUD加入畫面 4.加入nBulletNum變數,預設0 5.撰寫計算子彈發射數量的程式碼 6.執行畫面確認發射數量與按鍵數量相符 ~坦克大戰遊戲課程結束~