示例#1
0
 // Start is called before the first frame update
 void Start()
 {
     //获取当前场景中的怪物属性脚本
     gwsx = (怪物属性)gameObject.transform.GetComponent(当前怪物属性脚本名);
     //获取所有怪物预制体中的怪物战斗脚本
     GameObject[] 怪物预制体们 = GameObject.FindGameObjectsWithTag("怪物");
     for (int i = 0; i < 怪物预制体们.Length; i++)
     {
         gwzd = 怪物预制体们[i].GetComponent <怪物战斗>();
     }
 }
示例#2
0
 public int 攻击(怪物战斗 gw)
 {
     transform.position = Vector3.MoveTowards(transform.position, 攻击坐标, 20);
     //判断怪物是否还有生命
     if (gw.剩余血量 > 0)
     {
         //攻击
         int 扣血_ = 总_攻击力 - gw.防御力;
         //判断是否破防,不破防伤害为0
         扣血 = 扣血_ >= 0 ? 扣血_ : 0;
         gw.扣血显示(扣血);
     }
     else
     {
         //自动攻击转移目标
         if (自动攻击)
         {
         }
     }
     gw.剩余血量 -= 扣血;
     return(扣血);
 }
示例#3
0
    // Update is called once per frame
    void FixedUpdate()
    {
        血条.value = 剩余血量;

        //判断自己是否还有生命
        if (剩余血量 <= 0)
        {
            猪脚失败();
        }

        //位置的移动(模拟攻击动画)
        transform.position = Vector3.MoveTowards(transform.position, 原来坐标, 20);

        //判断攻击状态
        if (isAttack)
        {
            攻击目标 = GameObject.Find(攻击目标名字);
            //攻击目标丢失,停止攻击,攻击目标初始化(经优化,可删)

            /* if (攻击目标 == null)
             * { 攻击目标 = GameObject.Find("初始化");
             *   isAttack = false;
             * }*/
            gw = 攻击目标.GetComponent <怪物战斗>();

            ///
            /// 攻击
            ///
            //代码控制的攻击动画,有bug,待改进
            if (攻击速度_初始 <= 0)
            {
                攻击(gw);
                攻击速度_初始 = 总_攻击速度;
            }
            攻击速度_初始 -= Time.fixedDeltaTime;
        }
    }
示例#4
0
 // Start is called before the first frame update
 void Start()
 {
     gwzd = gameObject.transform.GetChild(0).gameObject.GetComponent <怪物战斗>();
 }
示例#5
0
 private void Start()
 {
     gwzd = gameObject.transform.parent.GetComponent <怪物战斗>();
     rwzd = GameObject.Find("牧师").GetComponent <人物战斗>();
 }
示例#6
0
    public void 怪物赋值(怪物战斗 gwzd)
    {
        //因为random在同一时间内生成的随机数是相同的.所以不能简单的new
        Random 随机类 = new Random(Guid.NewGuid().GetHashCode());
        int    随机数 = 随机类.Next(1, 100 + 1);

        //Debug.Log(随机数);
        //本类属性赋值;
        if (随机数 >= 1 && 随机数 <= 怪物1出现概率)
        {
            gwsx.怪物一赋值(this);
        }
        else if (随机数 > 怪物1出现概率 && 随机数 <= (怪物1出现概率 + 怪物2出现概率))
        {
            gwsx.怪物二赋值(this);
        }
        else if ((怪物1出现概率 + 怪物2出现概率) < 随机数 && 随机数 <= (怪物1出现概率 + 怪物2出现概率 + 怪物3出现概率))
        {
            gwsx.怪物三赋值(this);
        }
        else
        {
            gwsx.怪物四赋值(this);
        }


        //等级随机
        if (最低等级 == 最高等级)
        {
            随机数等级 = 最低等级;
        }
        else
        {
            随机数等级 = 随机类.Next(最低等级, 最高等级 + 1);
        }

        //怪物战斗脚本属性赋值
        gwzd.主动攻击 = 是否主动攻击;
        gwzd.等级   = 随机数等级;
        gwzd.血量   = 基础血量 + (随机数等级 * 血量成长);
        gwzd.攻击力  = 基础攻击力 + (随机数等级 * 攻击力成长);
        gwzd.防御力  = 基础防御力 + (随机数等级 * 防御力成长);
        gwzd.攻击速度 = 攻击速度;
        gwzd.经验值  = 基础经验 + 经验系数 * 随机数等级;
        gwzd.必掉材料 = 必掉材料;

        //怪物名字赋值与变色
        Text 字文本 = gwzd.gameObject.transform.Find("按钮").transform.Find("名字").GetComponent <Text>();

        字文本.text = 怪物名字 + "Lv" + 随机数等级;
        //1阶怪名字变黑色
        if (怪物位阶 == 1)
        {
            ColorUtility.TryParseHtmlString("#323232", out nowColor);
        }
        //2阶精英怪名字变蓝色
        if (怪物位阶 == 2)
        {
            ColorUtility.TryParseHtmlString("#114CEC", out nowColor);
        }
        //3阶boss怪名字变紫色
        else if (怪物位阶 == 3)
        {
            ColorUtility.TryParseHtmlString("#CB1EB2", out nowColor);
        }
        //3阶神话怪名字变红色
        else if (怪物位阶 == 4)
        {
            ColorUtility.TryParseHtmlString("#F60202", out nowColor);
        }
        字文本.color = nowColor;
    }