Unity關(guān)于BOSS多管血條和激光攻擊

預(yù)期效果圖


4625192-9893f2404a452844.png

新建一個腳本挫以,掛載在Canvas下的血條上(使用Slider)


4625192-20d5cc420358fbb5.png
using UnityEngine;
using System.Collections;
using UnityEngine.UI;


public class BossHpSliderScr : MonoBehaviour
{
    //Slider
    Slider bossSlider;
    //背景
    Image backGroud;
    //
    Image fill;
    //血量
    float bossHp = 10000;
    //當(dāng)前所受到的傷害
    public float allDemage;


    void Start()
    {
        bossSlider = GetComponent<Slider> ();
        backGroud = transform.GetChild (0).GetComponent<Image> ();
        fill = transform.GetChild (1).GetChild (0).GetComponent<Image> ();
    }

    void Update()
    {
        //
        BossHpSlider (0,3333,"yellow","Greed");
        BossHpSlider (3333,6667,"red","yellow");
        BossHpSlider (6668,10000,"black","red");
    }

    /// <summary>
    /// 根據(jù)條件者蠕,更改血條
    /// </summary>
    /// <param name="lowDemage">Low demage.最低傷害</param>
    /// <param name="hightDemage">Hight demage.最高傷害</param>
    /// <param name="backGroudName">Back groud name.血條背景</param>
    /// <param name="fillName">Fill name.血條</param>
    void BossHpSlider(float lowDemage,float hightDemage,string backGroudName,string fillName)
    {
        if (allDemage >= lowDemage && allDemage <= hightDemage) {
            //設(shè)置精靈
            backGroud.overrideSprite = Resources.Load(backGroudName,typeof(Sprite))as Sprite;
            fill.overrideSprite = Resources.Load(fillName,typeof(Sprite))as Sprite;
            //設(shè)置value
            bossSlider.value = (hightDemage - allDemage)/ 3333;
        }
    }

    /// <summary>
    /// boss減血方法
    /// </summary>
    /// <param name="Demage">Demage.</param>
    public void BossDemage(float Demage)
    {
        bossHp -= Demage;
        //統(tǒng)計(jì)所受到的傷害
        allDemage += Demage;
    }

}

在新建一個腳本,掛載在武器上

4625192-f4160c30fd807569.png
using UnityEngine;
using System.Collections;

public class WeaponFireScr : MonoBehaviour
{
    //根據(jù)bool值掐松,手動開火
    public bool isFire = false;
    //劃線
    LineRenderer weaponLineRender;
    //射線
    Ray ray;
    //射線檢測信息
    RaycastHit hitInfo;
    //擊中物體后激活的特效
    GameObject hit;
    //動態(tài)偏移量
    float number;
    //腳本代理
    BossHpSliderScr bossHpSliderScr;


    void Start()
    {
        weaponLineRender = transform.Find ("Fire").GetComponent<LineRenderer> ();
        hit = transform.Find ("Fire/Hit").gameObject;
        bossHpSliderScr = GameObject.Find ("BossHPSlider").GetComponent<BossHpSliderScr> ();
    }

    void Update()
    {
        if (isFire) {
            //開啟
            weaponLineRender.gameObject.SetActive (true);
            //設(shè)置射線
            ray = new Ray (weaponLineRender.transform.position, weaponLineRender.transform.forward);
            if (Physics.Raycast (ray, out hitInfo, 500f)) {
                //劃線
                weaponLineRender.SetPosition (0, weaponLineRender.transform.position);
                weaponLineRender.SetPosition (1, hitInfo.point);
                //激活擊中的特效
                hit.SetActive (true);
                //設(shè)置擊中特效所在的位置
                hit.transform.position = hitInfo.point;
                //boss掉血
                bossHpSliderScr.BossDemage(20);
            } else {
                //如果沒擊中物體踱侣,向前飛行
                weaponLineRender.SetPosition (1, weaponLineRender.transform.forward * 500f);
                //關(guān)閉特效
                hit.SetActive (false);
            }
            //動態(tài)偏移量
            number -= Time.deltaTime * 2;
            //設(shè)置動態(tài)偏移量(使激光即劃線有動態(tài)效果)
            weaponLineRender.material.SetTextureOffset ("_MainTex", new Vector2 (number, 0));
        } else {
            //不開火,歸位
            hit.SetActive(false);
            weaponLineRender.SetPosition (1, weaponLineRender.transform.position);
            weaponLineRender.gameObject.SetActive (false);
        }
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末大磺,一起剝皮案震驚了整個濱河市抡句,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杠愧,老刑警劉巖待榔,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異流济,居然都是意外死亡锐锣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門袭灯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刺下,“玉大人,你說我怎么就攤上這事稽荧¢佘裕” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵姨丈,是天一觀的道長畅卓。 經(jīng)常有香客問我,道長蟋恬,這世上最難降的妖魔是什么翁潘? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮歼争,結(jié)果婚禮上拜马,老公的妹妹穿的比我還像新娘。我一直安慰自己沐绒,他們只是感情好俩莽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乔遮,像睡著了一般扮超。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天出刷,我揣著相機(jī)與錄音璧疗,去河邊找鬼。 笑死馁龟,一個胖子當(dāng)著我的面吹牛崩侠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屁柏,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啦膜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淌喻?” 一聲冷哼從身側(cè)響起僧家,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裸删,沒想到半個月后八拱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涯塔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年肌稻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匕荸。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡爹谭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出榛搔,到底是詐尸還是另有隱情诺凡,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布践惑,位于F島的核電站腹泌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尔觉。R本人自食惡果不足惜凉袱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侦铜。 院中可真熱鬧专甩,春花似錦、人聲如沸钉稍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫁盲。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羞秤,已是汗流浹背缸托。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘾蛋,地道東北人俐镐。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像哺哼,于是被迫代替她去往敵國和親佩抹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容