美文网首页
Unity关于BOSS多管血条和激光攻击

Unity关于BOSS多管血条和激光攻击

作者: UnityLin | 来源:发表于2017-02-06 19:10 被阅读0次

预期效果图


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;
    //当前所受到的伤害
    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>
    /// 根据条件,更改血条
    /// </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) {
            //设置精灵
            backGroud.overrideSprite = Resources.Load(backGroudName,typeof(Sprite))as Sprite;
            fill.overrideSprite = Resources.Load(fillName,typeof(Sprite))as Sprite;
            //设置value
            bossSlider.value = (hightDemage - allDemage)/ 3333;
        }
    }

    /// <summary>
    /// boss减血方法
    /// </summary>
    /// <param name="Demage">Demage.</param>
    public void BossDemage(float Demage)
    {
        bossHp -= Demage;
        //统计所受到的伤害
        allDemage += Demage;
    }

}

在新建一个脚本,挂载在武器上

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

public class WeaponFireScr : MonoBehaviour
{
    //根据bool值,手动开火
    public bool isFire = false;
    //划线
    LineRenderer weaponLineRender;
    //射线
    Ray ray;
    //射线检测信息
    RaycastHit hitInfo;
    //击中物体后激活的特效
    GameObject hit;
    //动态偏移量
    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);
            //设置射线
            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);
                //设置击中特效所在的位置
                hit.transform.position = hitInfo.point;
                //boss掉血
                bossHpSliderScr.BossDemage(20);
            } else {
                //如果没击中物体,向前飞行
                weaponLineRender.SetPosition (1, weaponLineRender.transform.forward * 500f);
                //关闭特效
                hit.SetActive (false);
            }
            //动态偏移量
            number -= Time.deltaTime * 2;
            //设置动态偏移量(使激光即划线有动态效果)
            weaponLineRender.material.SetTextureOffset ("_MainTex", new Vector2 (number, 0));
        } else {
            //不开火,归位
            hit.SetActive(false);
            weaponLineRender.SetPosition (1, weaponLineRender.transform.position);
            weaponLineRender.gameObject.SetActive (false);
        }
    }

}

相关文章

  • Unity关于BOSS多管血条和激光攻击

    预期效果图 新建一个脚本,挂载在Canvas下的血条上(使用Slider) 在新建一个脚本,挂载在武器上

  • Laya:多元血条(BOSS的多管血)

    必备资源: 调用步骤: 组件代码:

  • Unity拖尾渲染你值得拥有

    在unity中我们都知道有线渲染器这个东西,因为我们要用的多,比如我们做塔防游戏,激光炮的制作,激光炮用激光来攻击...

  • 游戏后期总结2019-06-19

    策划组: 美术组: 主角 古神 怪攻击动画 斧头攻击动画 血条 * 特效已完成待测试 程序组: 攻击机制 ...

  • Unity射线

    射线 与现实中激光手电(激光笔)类似,射线的两个要素:原点和方向。unity引擎引入了这种机制,可以通过代码在场景...

  • 2022-01-20

    游戏有进度条,boss有血条,再难的boss你都能磨死,可以背板,但是现实中没有 你进入了一把现实中的恋爱模拟游戏...

  • 使用UGUI制作血条的两种方式

    这篇文章为大家介绍两种血条的制作的方法 第一种就是使用Image搭配遮罩来制作一个血条。 1.新建一个unity工...

  • 图解Java设计模式之备忘录模式

    @TOC 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战...

  • 超简单Unity UGUI血条设置

    原创by superowner 测试代码:

  • 关于漏洞和攻击

    看过一篇子电影 《没有绝对安全的系统》 首先黑客是怎么攻击一个系统的呢?一个系统又是怎么在黑客攻击下崩溃的? 我的...

网友评论

      本文标题:Unity关于BOSS多管血条和激光攻击

      本文链接:https://www.haomeiwen.com/subject/gruuittx.html