戰略分析室 - 遊戲開發探究

小功能實作(1) – 透過程式碼動態改變物件顏色

這是我近期想做的新系列文章,透過簡短的篇幅記錄下我曾經遭遇過的問題或是認為值得分享的實用小技巧,希望能幫助到有需要的朋友~


顏色是強化遊戲體驗的關鍵元素,能夠靈活地運用也是遊戲設計的基本技巧之一。

前情提要:2D Sprite的顏色資訊存放在"Sprite Renderer"元素中的"Color"裡。

 

Color.png

以下我要介紹兩種方法。

(1)完全透過Code操作

Unity的API十分方便,讓開發者能夠在程式碼裡輕鬆進入物件的Component裡更改數值。例如在本篇文章中我們要說的更改顏色,其中一種寫法如下:

螢幕快照 2017-08-25 上午2.05.06.png

在Update()裡做偵測,當玩家按下G鍵,就為這個物件(p.s這個Script是綁在球物件底下)賦予一個新的顏色。RGBA值都是255。

對RGBA色盤概念不清楚的朋友可以參考這張圖。

R:紅色 G:綠色 B:藍色 A:透明度

螢幕快照 2017-08-25 上午2.07.12.png

(2)開一個具public性質的Color陣列

然而,在程式碼裡設定RGBA值,似乎有些太不方便了(因為數值我背不起來XDD),所以我比較喜歡開一個Color陣列,直接在物件的Inspector裡做設定。

螢幕快照 2017-08-25 上午2.09.51.png

如此一來,我們回到Unity編輯器,在物件底下就會看到這樣的東西

螢幕快照 2017-08-25 上午2.10.03.png

在設定完Size後,就可以點選底下的Element來用色盤調顏色了!


實例:讓球撞到牆壁時就切換顏色。

螢幕快照 2017-08-25 上午2.13.20.png

在第11、12行,我開了一個Color陣列,然後宣告一個它專屬的變數Color_idx,用來選擇要進入陣列的第幾個位置。

然後直接注意到第28行,我設定了「當球撞到其他物件,且該物件的tag叫做"Wall"時」的條件,

給予Color_idx一個介於0~6的亂數(因為我的陣列開了7種顏色,如上圖)

接著利用方法(1)的方法進入SpriteRenderer這個元素,蛋我們現在可以直接把color指定到一個陣列位置上,就完成切換顏色的設定了!

成果如下:

礙於篇幅問題,其餘功能(Rigibody2D、Collider2D、移動板子、把球發射出去、讓球具有彈性…)等細節不是本篇的重點XD

我再找時間記下來或是歡迎大家私下來和我聊聊~

 

 

 

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s