[Day20] GameOver遊戲結算畫面設計 - iT 邦幫忙

文章推薦指數: 80 %
投票人數:10人

我們的小遊戲畫面設計已經快要接近尾聲了,也就就是要GameOver了!!( ... 你沒看錯,原因是KorGE內建沒有支援中文字顯示,就先暫時換破英文來顯示了。

第12屆iThome鐵人賽 DAY 20 0 SoftwareDevelopment 用KorGE開發自己的Kotlin小遊戲系列第 20篇 [Day20]GameOver遊戲結算畫面設計 12th鐵人賽 korge kotlin 小遊戲 Yaya 團隊Kotlin鐵人陣 2020-09-2907:12:49470瀏覽 我們的小遊戲畫面設計已經快要接近尾聲了,也就就是要GameOver了!!(不是啦~是要來把GameOver畫面製作出來) 在[Day13]遊戲背景製作都已經有草稿示意圖出來了,就是闖關失敗跟成功各自會有不一樣的呈現畫面。

不過這GameOver的畫面的結果其實也是承接由GamePlay的遊戲結果,而GamePlay出來現身的外星人,是從Menu選擇出來的,所以這邊我們其實要有一個地方來記憶目前選到的外星人暫存,讓這個資料共享在不同的畫面當中。

因此我在src/commonMain/scene的資料夾下產生一個SharedData來存放這些資料。

SharedData.kt 分別的變數有選了那一個外星人,分數,跟是否闖關成功。

objectSharedData{ varSELECT_RUN_ALIEN:CHARACTER=CHARACTER.GREEN varGAME_SCORE:Int=0 varIS_GAME_OVER_SUCCESS=true } 這樣在Menu.kt的外星人被點擊onClick部分就能加上SELECT_RUN_ALIEN是哪隻外星人了。

也能在GamePlay.kt的載入角色時,知道是選了哪一隻。

GamePlay.kt suspendfunloadCharacter():Alien{ returnAlien().apply{ load(SharedData.SELECT_RUN_ALIEN) walk() } } 接著我們在時間倒數完的時候,會結束遊戲,就當作闖關成功的條件,在血包扣光則是闖關失敗,同時外星人也會做出成功跟失敗的表情動作,場景物件也需要全部停止移動,SharedData的分數跟狀態也同時記錄下來要傳給下一個GameOver場景。

//進入遊戲結束畫面 funcheckGameOver(){ if(gameTimer.totalTime==0){ background.stop() ItemManager.stop() alien.goal()//外星人成功動作 SharedData.run{ GAME_SCORE=score.nowValue IS_GAME_OVER_SUCCES=true } goToGameOver() }elseif(blood.nowValue==0){ background.stop() ItemManager.stop() alien.dead()//外星人失敗動作 SharedData.run{ GAME_SCORE=score.nowValue IS_GAME_OVER_SUCCES=false } goToGameOver() } } fungoToGameOver(){ launch{ delay(2.seconds)//延遲兩秒讓外星人做動作 sceneContainer.changeTo() } } 你瞧!粉紅外星人因為過關了正在手舞足道!(差一點要死掉了….) 反之,如果受傷失敗就會擺臭臉,血包都被扣光光了。

GameOver.kt 在GameOver畫面用SharedData.IS_GAME_OVER_SUCCES判斷要顯示的背景畫面,跟外星人顯示的表情。

//闖關背景圖案 if(SharedData.IS_GAME_OVER_SUCCES){ image(resourcesVfs["gameover_success.png"].readBitmap()){ anchor(0.5,0.5) scale(ConfigModule.size.width/width,ConfigModule.size.height/height) position(scaledWidth/2,scaledHeight/2) } }else{ image(resourcesVfs["gameover_failed.png"].readBitmap()){ anchor(0.5,0.5) scale(ConfigModule.size.width/width,ConfigModule.size.height/height) position(scaledWidth/2,scaledHeight/2) } } //外星人闖關後表情 valalien=Alien().apply{load(SharedData.SELECT_RUN_ALIEN)} addChild(alien) alien.alignTopToBottomOf(tapString) alien.alignRightToLeftOf(score) alien.x-=30 if(SharedData.IS_GAME_OVER_SUCCES){ alien.goal() }else{ alien.hurt() } 最後把分數跟闖關字串跟NEXT下一步放上遊戲畫面上。

//加入分數 valscore=Score().apply{load()} addChild(score) score.initPosition() score.alignTopToBottomOf(tapString) score.nowValue=SharedData.GAME_SCORE score.update() //加上下一步按鈕 image(resourcesVfs["next.png"].readBitmap()){ anchor(0.5,0.5) position(image.width/2,image.height-200) onClick{ launch{ sceneContainer.changeTo() } } } 把以上的程式碼補齊後,從GamePlay結束的兩秒後,就是延續GamePlay.kt的goToGameOver()這一段程式。

fungoToGameOver(){ launchImmediately{ delay(2.seconds)//延遲兩秒讓外星人做動作 sceneContainer.changeTo() } } 場景畫面自動切到結算畫面,告知玩家闖關成功或失敗,顯示得到的分數,也有NEXT按鈕提醒到下一頁去。

總結 不知道有人發現我一開始設計的圖不是中文的闖關成功跟闖關失敗嗎?  嗯嗯嗯..你沒看錯,原因是KorGE內建沒有支援中文字顯示,就先暫時換破英文來顯示了。

但是後來我還很很認真跑去github發了issue:https://github.com/korlibs/korge/issues/288 作者很快就告訴我原因,就是你要自己去弄中文字型,後來發現自己還滿犯蠢的應該要早點發現@@,大概都一直在開發APP,不管切換什麼語言字都能顯示出來,覺得應該隨便打字都要正常吧。

所以補上一張闖關成功的截圖。

我是下載這套免費字型「內海字體」:https://github.com/max32002/naikaifont 下一回就要來開始設計除了核心遊戲外的小系統功能排行榜囉! 留言 追蹤 檢舉 上一篇 [Day19]Splash進板畫面跟Menu遊戲大廳設計 下一篇 [Day21]Rank排行榜設計-本機存檔使用VfsFile 系列文 用KorGE開發自己的Kotlin小遊戲 共30篇 目錄 RSS系列文 訂閱系列文 13人訂閱 26 [Day26]Client端串接API 27 [Day27]排行榜畫面加入API 28 [Day28]輸出到不同平台-Android,iOS, Web 29 [Day29]在KorGE加入廣告 30 [Day30]使用KorGE的開發心得 完整目錄 尚未有邦友留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20454篇 完賽人數 572人 鐵人賽最新文章 建立第一個單元測試(golang)-2(Day21) 更新網格交易機器人 STM32的開發生態,Cube、HAL庫、LL庫 閒聊STM32CubeMX和STM32CubeIDE 建立第一個單元測試(golang)-1(Day20) Day38-在AWSLambda中使用YOLO推估(Inference) Day37-在AWSLambda建立OpenCVLayer Day36-使用Container建立AmazonSageMaker端點 Day35-AmazonSageMaker簡介 今天來瞄一眼龍與雀的科技:知覺共享技術Body-sharing 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce 永豐金融API測試員 [Day03]tinyML開發板介紹 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 請問這個錯在哪? 請問是否有人有使用過VisualStudioIDE?? AD五大角色轉移差異。

到底API設計的方向該往哪裡去? [已解決]請益,每一筆商品資料內的圖片,儲存在資料庫內方式 請問如何把網頁製作成手機APP? htmljavascript值存入PHP 資料庫的數值sum加總後,數值仍然會少算?! MYSQL:如何計算每筆數據的移動平均值? 正航ERP跑傳票維護就轉圈圈久無反應... IT邦幫忙 站方公告 2021iThome鐵人賽精彩文章超過2萬篇,預計12月揭曉本屆獲勝鐵人 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 請問是否有人有使用過VisualStudioIDE?? 請問這個錯在哪? 到底API設計的方向該往哪裡去? 急!傳值問題 htmljavascript值存入PHP 資料庫的數值sum加總後,數值仍然會少算?! 正航ERP跑傳票維護就轉圈圈久無反應... 請問如何把網頁製作成手機APP? [已解決]請益,每一筆商品資料內的圖片,儲存在資料庫內方式 Adaptec5405Raid1E、5、5EE、6、10選擇性障礙 熱門文章 STM32的開發生態,Cube、HAL庫、LL庫 更新網格交易機器人 從PDF刪除水印的5種最佳方法 網路是怎樣連接的(十二)IP地址怎麼看 【徵才/台北松山區】Linux/Winserver系統維運工程師 YOLOv4模型訓練實作 碩士課程一問 701CLIENT門禁系統卡片無效 Java開發WEB的好平台--Grails--(4)建立第一個Controller 惡意程式(malware) 一週點數排行 更多點數排行 海綿寶寶(antijava) raytracy(raytracy) ccenjor(ccenjor) Felix(redqi) Mao(TutelaryMao) rogeryao(rogeryao) ㊣浩瀚星空㊣(yoching) h198805041(h198805041) juck30808(juck30808) 一級屠豬士(hitomitanaka) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?