示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (stat == null)
        {
            stat = statControler.GetStatOfType(statType) as ConsumableStat;
            if (stat != null)
            {
                stat.OnStatDepletedCallBack += Die;
            }
        }

        if (transform.position != target)
        {
            target = player.position + new Vector3(attackRange / 2, attackRange / 2, 0);

            var norm = target;
            norm.Normalize();
            var angle = Mathf.Atan2(norm.x, norm.y);
            //Debug.Log(angle);

            if (angle < ThreePiOverFour && angle > -PiOverFour)
            {
                mageAni.SetInteger("WalkState", (int)DIR.UP);
            }
            else if (angle < PiOverFour && angle > -PiOverFour)
            {
                mageAni.SetInteger("WalkState", (int)DIR.RIGHT);
            }

            else if (angle < -PiOverFour && angle > -ThreePiOverFour)
            {
                mageAni.SetInteger("WalkState", (int)DIR.DOWN);
            }
            else if (angle > ThreePiOverFour || angle < -ThreePiOverFour)
            {
                mageAni.SetInteger("WalkState", (int)DIR.LEFT);
            }

            //transform.position = Vector3.MoveTowards(transform.position, target, Time.deltaTime * speed);
        }
        else
        {
            mageAni.SetInteger("WalkState", (int)DIR.IDLE);
        }

        if (Vector3.Distance(player.position, transform.position) <= attackRange)
        {
            UseItem();
        }

        Vector2 dir = target.normalized;

        rb.MovePosition(rb.position + dir * speed * Time.fixedDeltaTime);
    }
示例#2
0
    private void Update()
    {
        if (stat == null)
        {
            stat = statControler.GetStatOfType(statType) as ConsumableStat;

            if (stat != null)
            {
                stat.OnStatDepletedCallBack += Die;
            }
        }
    }
示例#3
0
    IEnumerator SetHealth()
    {
        yield return(new WaitForEndOfFrame());

        if (health == null)
        {
            health = statControler.GetStatOfType(statType) as ConsumableStat;

            if (health != null)
            {
                health.OnStatDepletedCallBack += Die;
            }

            StartCoroutine(SetHealth());
        }
        else
        {
            StartCoroutine(EnemyFSM());
        }
    }
示例#4
0
    private void Update()
    {
        //Debug.Log(target);
        rb.MovePosition(rb.position + dir * speed * Time.fixedDeltaTime);

        if (health == null)
        {
            health = GetComponent <StatControler>().GetStatOfType(StatType.HealthStat) as HealthStat;
        }

        if (stat == null)
        {
            stat = statControler.GetStatOfType(statType) as ConsumableStat;

            if (stat != null)
            {
                stat.OnStatChangeCallBack   += UpdateColor;
                stat.OnStatDepletedCallBack += Die;
            }
        }
    }