iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 13
0

(本篇網誌版: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型態的變數invincibleuseless分別儲存之後要更換為的鐵頭功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欄位。

http://ithelp.ithome.com.tw/upload/images/20161213/20103149j8B5QsDBO4.png

http://ithelp.ithome.com.tw/upload/images/20161213/20103149ydcF0aneEX.png

進入Play Mode測試,現在接到「少林功夫好」頭巾後,在主角頭上的頭巾就會自動變成「鐵頭功」或是「金鋼腿」了。

今天的文章有點短,不過我相信「少林功夫好」不同於其他裝備,值得自成一篇文章。

繪圖進度

完成遊戲規則看板。會在遊戲開始時短暫顯示。

http://ithelp.ithome.com.tw/upload/images/20161213/20103149nUu2OxTavE.png

待續。


上一篇
Day 12: 發射子彈
下一篇
Day 14: 裝備動畫——Animator
系列文
我要和天一樣高!!!(Unity 2D手機小遊戲開發日誌)30

尚未有邦友留言

立即登入留言