示例#1
0
    public void TakeDamage(int attack)
    {
        if (state == cowState.Death)
        {
            return;
        }
        float value = Random.Range(0f, 1f);

        if (value < miss_rate)//Miss效果
        {
            //AudioSource.PlayClipAtPoint(miss_sound, transform.position);
        }
        else
        {
            state = cowState.Gethit;
            //血量减少的同时,血条也减少
            this.hp -= attack;
            Slider_c3.instance.SetValue(hp);
            //显示受到的伤害数值
            GameObject.Find("Canvas (1)").GetComponent <HudText>().HUD(attack);
            //野怪受到伤害身体变红
            StartCoroutine(ShowBodyRed());
            if (hp <= 0)
            {
                state = cowState.Death;
            }
        }
    }
示例#2
0
 // Start is called before the first frame update
 void Start()
 {
     state              = cowState.Idle;                     //初始化初始状态
     animall_now        = animall_idle;                      //初始化初始动画
     aniname_attack_now = aniname_normalattack1;             //初始化攻击动画
     cc        = this.GetComponent <CharacterController>();
     player    = GameObject.FindGameObjectWithTag("Player"); //获取玩家对象
     target    = player.transform;                           //获取玩家的位置
     animation = GetComponent <Animation>();
     addAnimationEvent(aniname_normalattack1, "controlHP1");
     addAnimationEvent(aniname_normalattack2, "controlHP2");
     addAnimationEvent(aniname_normalattack3, "controlHP3");
     addAnimationEvent(aniname_crazyattack, "controlHP4");
     c = GameObject.FindGameObjectWithTag("Player").GetComponent <CharacterAttackSystem>();
 }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        float distance = Vector3.Distance(target.position, transform.position); //计算玩家与野怪的距离

        if (distance <= maxDistance)                                            //判断玩家是否在野怪的攻击范围内
        {
            state = cowState.Attack;
        }
        if (distance <= minDistance)
        {
            //始终朝向玩家
            transform.LookAt(target);
        }
        if (state == cowState.Attack)
        {
            AutoAttack();                 //野怪执行攻击
        }
        else if (state == cowState.Death) //如果野怪的状态是死亡,则播放死亡动画
        {
            animation.CrossFade(animall_death);
        }
        else//野怪处于其他状态
        {
            animation.CrossFade(animall_now);//播放野怪当前动画
            if (animall_now == animall_walk)
            {
                cc.SimpleMove(transform.forward * speed);
            }
            timer += Time.deltaTime;//计时器
            if (timer >= time)
            {
                timer = 0;
                Randomstate();//随机产生行走和静立状态
            }
        }
        if (hp <= 0)
        {
            state = cowState.Death;
            animation.CrossFade(animall_death);
            Destroy(this.gameObject, 1.5f);
        }
    }