創作內容

10 GP

遊戲程式設計與Unity3D引擎初步認識(九)

作者:雪藏│2014-07-03 21:48:43│贊助:20│人氣:2050
今天要來介紹血條的製作方式,建立5個物件跟1個script,並準備一個用來當血條的貼圖


然後為HealthCamera附加Camra的Component,EnemyHealth跟TowerHealth附加血條的貼圖,並調一下顏色,HealthController附加同名的script



然後打開HealthController這個script開始加入程式碼




我打算用這個script去管理所有的血條,所以我會有變數連結到攻擊方跟被攻擊方的血條物件TowerHealth和EnemyHealth,然後我把血條的物件放在另一個攝影機底下,這樣做是如果主場景是3D的,就不用去處理旋轉的問題,然後還有兩個變數是用來儲存最大血量,用來計算目前血量在總血量中的比例,還有一個偏移值是因為貼圖的定位點在左邊,在轉換座標時,血條的位置會有偏差,所以要修正一下。
我總共建立了6個方法,基本上攻擊者跟被攻擊者的方法差不多,都有初始化血條,更新血條的縮放,轉換座標位置來移動血條的座標。
在初始化血條的部分,我把1 除以最大血量再儲存在變數裡,這是因為做乘法比做除法快,所以我先除起來放著。在更新血條的部分,我把目前血量傳進來並跟除好的最大血量相乘,得到要縮放的比例,再去縮放血條大小。傳送攻擊者在螢幕上的位置,我把原物件在場景攝影機上的螢幕位置傳進來後再把它轉成血條攝影機裡的世界座標( Scripting API)來達成跟著人物移動的效果。

再來打開TowerManage這個script加入血條相關的程式碼


我新增了一個Camera的變數,這是因為我要把物件在場景攝影機裡螢幕的位置傳給血條控制器使用。我在敵人把傷害傳進來時,把最後結算的結果傳送給血條控制器調整血條大小,並在script剛啟動時把最大血量傳送血條控制器,最後我在LateUpdate()(Scripting API)這個方法裡面傳送物件目前的位置給血條控制器,這個方法跟Update()一樣都是每一幀會呼叫一次,但它的優先順序在Update()之後,有時血條會有抖動的現象,放在這裡執行就可避免這個問題。然後打開CubeController也加入相同的程式碼


因為攻擊方目前沒有被攻擊的部分,所以還沒加上傳送目前血量給血條控制器。都完成後,我們把需要的變數拉一拉,並執行看看有什麼效果吧






一樣,快在你的遊戲裡試試吧。

GitHub原始碼下載連結

遊戲程式設計與Unity3D引擎初步認識(十)


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2498384
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 1 篇留言

屁蛋
請問 大大 你的貼圖是什麼格式 為何我貼圖他讀不到?

08-18 17:53

雪藏
png08-19 22:41
我要留言提醒:您尚未登入,請先登入再留言

10喜歡★andy1214 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:遊戲程式設計與Unity... 後一篇:遊戲程式設計與Unity...

追蹤私訊

作品資料夾

ok273426大家
畫完圖都會在這裡說一下~大家今天有沒有香香的啊?看更多我要大聲說16小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】