(本篇網誌版:http://shineright.blogspot.tw/2016/12/day-13.html)
終於輪到製作偉大「少林功夫好」頭巾的時刻了。不過因為我還沒做好敵人與敵方子彈,所以今天不會做它實際的功能,只會改變頭巾的字樣(50%鐵頭功,50%金鋼腿)。
新建一個罷氣十足的「ShouLinKungFuIsGood.cs」C# Script。
public class ShouLinKungFuIsGood : MonoBehaviour
{
public SpriteRenderer sr; //實際擁有Sprite Renderer Component的Game Object
public Sprite invincible; //鐵頭功的Sprite
public Sprite useless; //金鋼腿的Sprite
void Start()
{
if (Random.value >= .5f) { //50%
sr.sprite = invincible; //更換Sprite圖片為鐵頭功
} else { //50%
sr.sprite = useless; //更換Sprite圖片為金鋼腿
}
}
}
sr用來取得擁有Sprite Renderer Component的Game Object。因為我先前以另一個Game Object包裝擁有Sprite Renderer Component的Game Object以調整座標,所以必須到Inspector把真正擁有Sprite Renderer Component的Game Object拖到Sr欄,才能Script中更改它的Sprite。
接著兩個Sprite
型態的變數invincible
與useless
分別儲存之後要更換為的鐵頭功Sprite與金鋼腿Sprite。這兩個變數一樣可以在Inspector把Sprite拉至欄位設定為初始值。
進入Start()
函數,if
判斷式內的Random.value
會回傳任意[0, 1]之間的浮點數。所以Random.value >= .5f
剛好有一半的機率成立,換句話說,if (Random.value >= .5f) {}
和else {}
大括號內的程式碼有同等的機率被執行。
大括號裡的sr.sprite = invincible
把Sprite Renderer的Sprite設定為新的Sprite(鐵頭功)。也就是把「少林功夫好」的圖片改成「鐵頭功」。else大括號裡的程式碼亦然。
回到Unity,把「少林功夫好」裝備加上Shou Lin Kung Fu Is Good (Script) Component,並把鐵頭功和金鋼腿的Sprite分別拉至Invincible和Useless欄位。
進入Play Mode測試,現在接到「少林功夫好」頭巾後,在主角頭上的頭巾就會自動變成「鐵頭功」或是「金鋼腿」了。
今天的文章有點短,不過我相信「少林功夫好」不同於其他裝備,值得自成一篇文章。
完成遊戲規則看板。會在遊戲開始時短暫顯示。
待續。