unity製做簡單血條

學習Unity已經10天了,也沒發現有什麼長進,真的急。昨天仿着官方Demo作了個射擊遊戲輪廓,其中須要給每一個怪作一個血條。php

搜了一些,挺複雜的,用NGUI或者UGUI,外加很長的代碼。。。不過仍是找到了一篇簡單的。ide

可是那一篇把全部的東西都放一塊兒了,不太好,我在這整理分離一下。函數

背景:學習

官方Demo惡魔射手。其中每一個怪都有一個EnemyHealth腳本,該腳本主要有怪物的血量等,而後有個TakeDamage()函數來計算傷害後的血量。spa

開始:code

一、製做圖片:orm

PS一張細長的紅色圖片做爲血量;對象

二、製做一個材質球,起名爲「XuetiaoMaterial」,單擊這個材質球,在Inspector面板中把紅色圖片加進來,就成了紅色的材質球了。blog

 Inspector面板的Shader下選擇Unlit/Transparent遊戲

三、建立一個Cube,放到你須要加血條的怪上,Cube做爲怪的子物體。拖動成紙片子的形狀,而後拖動到合適的位置便可。

四、單擊這個Cube,你願意更名就更名。把2中的材質球加到這個Cube中來,它就變成紅色的了。把Cube的Collider、倆Shdow勾選掉。畢竟血條不用陰影也不用碰撞嘛。

五、在你的控制血量的腳本里加點東西,我是在EnemyHealth.cs中加的,以下:

  血條貼圖是一個新貨,代碼計算後會從新賦給Cube

 public Texture2D bloodBarRed;  // 血條貼圖
    public Transform bloodBar; // 表明血條的CUBE

另外還有:

    void Start()
    {
        bloodBar = transform.FindChild("BloodBarCube"); //得到血條物體
       
       
        bloodBarRed = new Texture2D(512, 32); // 新建一個貼圖,用以變化後賦給Cube
        bloodBarRed.wrapMode = TextureWrapMode.Clamp; // 拉伸該圖
    }

還有,要使血條時刻正對攝像機的:

 void Update ()
    {
        bloodBar.LookAt(Camera.main.transform.position);  // 朝向攝像機
    }

下面是加入的一個更新血條的函數:

    public void UpDateBloodBar()
    {
        float cunrrentRed = currentHealth * bloodBarRed.width / startingHealth;  //直接除,會由於兩個整型獲得0,因此先乘之後除
        for (var x = 0; x < bloodBarRed.width; x++)
        { // 對每一個座標點
            for (var y = 0; y < bloodBarRed.height; y++)
            {//循環執行y軸從0開始,y軸小於血條的寬的話執行下面,不然+
                if (x < cunrrentRed) 
                    bloodBarRed.SetPixel(x, y, Color.red);   //x小於血條長度的範圍塗成紅色,
                else 
                    bloodBarRed.SetPixel(x, y, Color.gray);         //其餘部位塗成黑色
            }
        }
        bloodBarRed.Apply(); // 應用該圖
        bloodBar.gameObject.renderer.material.mainTexture = bloodBarRed; // 將修改後的貼圖給血條Cube
       
    }

其中 currentHealth是我EnemyHealth類中的成員變量,startingHealth也是,表明了總血量。

而後你能夠在血量改變的函數中調用此函數。從而更新血條。若是有必要,你也能夠將當前血量做爲形參傳入。

六、將腳本拖入對應的對象(須要血條的怪)中,單擊該怪,在Inspector面板中,找到該腳本,把紅色圖片拖入bloodBarRed中,把血條Cube(該怪的子物體)拖入bloodBar便可。

 

運行就OK了。

 

致謝:

 

http://www.manew.com/forum.php?mod=viewthread&tid=33694&page=1

相關文章
相關標籤/搜索