今天來介紹可樂的好幫手–TexturePacker,以及widget中的spinner
TexturePacker是要花錢買的,所以本篇只是介紹它的方便度,並不是要大家一定要買這個工具。
如果你是手遊愛好者,一定有遇過裝完遊戲之後,還要再去伺服器拉資源檔下來,有時候誇張一點要300~400m,這些資源檔不外乎是音樂,音效,影片,圖片,當然圖片應該是居多,通常資源檔的圖片會是長什麼樣子呢?
大概會是這樣:

對,就是這樣,不要懷疑,這是很多張圖放到同一張圖裡,再利用已知的長寬和位置去截出來使用,這個方法在網頁或是遊戲中都很常見,一方面是節省空間二是方便管理,怎麼說方便管理呢?
例如我有一個人物,需要走路,跑步,待機,發招等動作,加上本身帶有武器,那麼我就可以把以上的東西都放進同一張圖,就會變成這樣:

所有跟人物有關係的圖片都放進來了,將來要修飾這個人物,只要對這張圖更新就好

TexturePacker可以幫助開發者迅速完成以上VJ所描述的,是可樂官方推薦的的第三方軟體,TexturePacker的官網在這,這間公司開發滿多稀奇古怪的小工具,都是針對遊戲引擎,只是有沒有支援可樂就不知道了,使用這個小工具可以非常快速地做出一個動畫:

這是由15張圖組合而成的連續動作,如果有TexturePacker輔助,你可能花不到五分鐘的時間就完成了。
(基本上在幀數30的時候,要有16張連續圖才會顯得順暢而且沒有間斷感)

1.打開軟體(廢話),加入圖檔(Add smart folder):

2.指定好資料夾之後,會將資料夾的圖都放進來(好像不用解釋?)

3.接著在右上,設定要匯出lua的位置,組合好的png也會一併在這邊產出,這邊我取名叫做Sprite.lua

4.按下publish Sprite sheet,就會把檔案吐到你指定的目錄。

5.然後目錄裡就多了兩個檔案,lua和png。

6.png的內容

以上,就完成了素材的部分,一行程式碼都不用寫,接下來利用可樂裡的兩個物件,ImageSheetspinner,這邊容我稍微解說一下:

1.ImageSheet如果用抽象的說法,就是一個倉庫,可以將圖寄放在倉庫裡,要用的時再拿出來,放在裡面的圖不會顯示在畫面上。
2.spinner,基本上不屬於元件,而是可樂官方開發出來的小工具,目的是可以連續將ImageSheet拿出來使用,不需要再去做removecreate的動作。

程式碼如下,下載範例在這

local widget = require( "widget" )
local sheetInfo = require("sprite")

local myImageSheet = graphics.newImageSheet( "sprite.png", sheetInfo:getSheet() )


-- Create the widget
local spinner = widget.newSpinner(
 {

sheet = myImageSheet,
 startFrame = 1,
 count = 15,
 time = 800
 }
)
 
spinner:start()
spinner.x = display.contentCenterX
spinner.y = display.contentCenterY

另外,如果你不需要播放連續動畫,只是要從倉庫拿出一張圖來而已的話,用法是這樣
local sprite = display.newSprite( myImageSheet , {frames={sheetInfo:getFrameIndex(“圖片檔名“)}} )
sheetInfo:getFrameIndex,你可以餵食index(數字)或是圖片檔名,一般來說,VJ都是給圖片檔名,這樣在撰寫程式碼的時候,比較不會發生錯誤,也比較可以靈活運用,使用index常常會發生不可預知的問題。


如果你的遊戲是很吃圖片的種類,那麼VJ誠心建議要善用ImageSheet但是我不是鼓勵要買Texture Packer),才不會發生切換場景有延遲的鈍感,這也就是為什麼我們進入手遊之前,遊戲會有一條長長的load畫面,告訴你~~~正在努力中唷!!!」,然後通常背景會是一個穿的少得不能再少的女角,用一個讓你嫑嫑的角度害你忘記其實你的手機很爛,載入要花很長時間…唷不是,是資源載入要花很長時間。


另外,最近VJ在尋找美術人才,如果您也想不開想跳入火坑的話,我會很樂意推你一把!?
如果你也有意願加入歷史傳說的開發,歡迎到歷史傳說粉絲團跟我聯繫唷。

Categories: Corona sdk 實作

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

Related Posts

Corona sdk 實作

CORONA SDK 音樂播放

使用可樂的好處就是比一般的遊戲引擎還快上手,一是不需要做太多設定,二是 Read more…

Corona sdk 實作

Corona SDK影格動畫(2)

因為工作的關係,很久很久沒有更新網誌了,目前卡牌部分已經暫停下來,在此 Read more…

Corona sdk 實作

Corona SDK 跳動的數字

以上,就是本次教學,謝謝大家。     &nbsp Read more…