Exemplo n.º 1
0
        public override void updating()
        {
            base.updating();
            switch (stat)
            {
            //フォロー
            case cpuStat.chasing:
                agent.SetDestination(targetpos);
                distanceCheck();
                break;

            //攻撃
            case cpuStat.attack:
                atkBeahviour();
                break;

            //ゴールラインへ走る
            case cpuStat.runUp:
                agent.SetDestination(doorPos);
                break;
            }
            anim.SetFloat(StaticStrings.move, agent.velocity.magnitude);
            if (target == null)
            {
                if (stat != cpuStat.runUp)
                {
                    stat = cpuStat.runUp;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///  attack selected target
        /// </summary>
        public void atkBeahviour()
        {
            if (target == null)
            {
                return;
            }
            targetpos = new Vector3(target.position.x, transform.position.y, target.position.z);
            float distance = Vector3.Distance(transform.position, targetpos);

            if (distance > atkRange)
            {
                stat = cpuStat.chasing;
            }
            if (agent.destination != transform.position)
            {
                agent.SetDestination(transform.position);
            }
            //rotation
            transform.LookAt(target, Vector3.up);
            transform.rotation = Quaternion.Euler(0, transform.eulerAngles.y, 0);
            atkCounter        -= Time.deltaTime;
            if (atkCounter <= 0)
            {
                atkCounter = atkDelay;
                anim.SetTrigger(StaticStrings.shooting);
            }
        }
Exemplo n.º 3
0
        //距離の確認
        void distanceCheck()
        {
            if (target == null)
            {
                return;
            }
            targetpos = new Vector3(target.position.x, transform.position.y, target.position.z);
            float distance = Vector3.Distance(transform.position, targetpos);

            if (distance <= atkRange)
            {
                stat = cpuStat.attack;
            }
            Debug.DrawLine(this.transform.position, target.transform.position + new Vector3(0, 3, 0), Color.red);
        }
Exemplo n.º 4
0
 //段階を変更する
 public void changeStatus(cpuStat s)
 {
     agent.ResetPath();
     stat = s;
 }
Exemplo n.º 5
0
 //最初の場に戻る
 public override void reset()
 {
     base.reset();
     findTarget();
     stat = cpuStat.chasing;
 }