Example #1
0
 private async UniTask HummerUpdate()
 {
     if (!FLAGS[5])
     {
         if (PT != null && commode != ComMode.Move && commode != ComMode.Back && commode != ComMode.Nothing)
         {
             float dis = Vector3.Distance(Rb.position, PT.position);
             if (dis > 3f)
             {
                 commode  = ComMode.Move;
                 FLAGS[1] = true;
                 FLAGS[2] = true;
                 FLAGS[3] = true;
             }
         }
         if (commode == ComMode.Nothing)
         {
         }
         else if (commode == ComMode.Back)
         {
             await BackStep();
         }
         else if (commode == ComMode.Move)
         {
             await Move();
         }
         else if (commode == ComMode.Attack)
         {
             await MassiveAttack();
         }
     }
 }
Example #2
0
 private async UniTask ChComMove()
 {
     Anim.Play("Idle");
     commode  = ComMode.Move;
     FLAGS[1] = true;
     FLAGS[2] = true;
     FLAGS[3] = true;
     FLAGS[6] = true;
 }
Example #3
0
 private async UniTask BackStep()
 {
     if (FLAGS[1])
     {
         t = 0;
         RaycastHit hit;
         Ray        ray = new Ray(Rb.position, transform.forward * -1);
         if (Physics.Raycast(ray, out hit, 5f))
         {
             if (hit.collider.gameObject.activeSelf)
             {
                 FLAGS[2] = false;
             }
         }
         BSSpos   = Rb.position;
         BSEpos   = Rb.position + (transform.forward * -5f);
         FLAGS[1] = false;
     }
     if (FLAGS[2])
     {
         if (FLAGS[3])
         {
             Anim.CrossFade("BackStep", 0.16f);
             Rb.isKinematic = true;
             FLAGS[3]       = false;
         }
         float   angle = Mathf.Deg2Rad * 180 * t;
         Vector3 pos   = Vector3.Lerp(BSSpos, BSEpos, t);
         if (t <= 1f)
         {
             Rb.position = new Vector3(pos.x, BSSpos.y + (Mathf.Sin(angle) * JumpGain), pos.z);
             t          += 0.1f * 9 * Time.deltaTime;
         }
         else
         {
             if (Rb.isKinematic)
             {
                 Rb.isKinematic = false;
                 Anim.CrossFade("Idle", 0.1f);
             }
             if (isGround)
             {
                 commode  = ComMode.Attack;
                 FLAGS[1] = true;
                 FLAGS[2] = true;
                 FLAGS[3] = true;
             }
         }
     }
     else
     {
         commode  = ComMode.Attack;
         FLAGS[1] = true;
         FLAGS[2] = true;
     }
 }
Example #4
0
 private async UniTask HasBushed()
 {
     //Debug.Log("LLL");
     if (Rb.isKinematic)
     {
         Rb.isKinematic = false;
     }
     Anim.Play("Damage");
     Rb.velocity = ES.BushDirection * 8f;
     commode     = ComMode.Nothing;
     Invoke("ChComMove", 1.0f);
     FLAGS[6] = false;
     ES.BashF = false;
 }
Example #5
0
        /// <summary>
        /// 获取/设置 字段值。
        /// 一个索引,基类使用反射实现。
        /// 派生实体类可重写该索引,以避免反射带来的性能损耗
        /// </summary>
        /// <param name="name">字段名</param>
        /// <returns></returns>
        public override Object this[String name]
        {
            get
            {
                switch (name)
                {
                case "ID": return(_ID);

                case "Number1": return(_Number1);

                case "SpotEquipmentNumber": return(_SpotEquipmentNumber);

                case "ConnMode": return(_ConnMode);

                case "TelephoneNumber": return(_TelephoneNumber);

                case "CostPackage": return(_CostPackage);

                case "RenewalCycle": return(_RenewalCycle);

                case "ThisRenewalTime": return(_ThisRenewalTime);

                default: return(base[name]);
                }
            }
            set
            {
                switch (name)
                {
                case "ID": _ID = Convert.ToInt32(value); break;

                case "Number1": _Number1 = Convert.ToInt32(value); break;

                case "SpotEquipmentNumber": _SpotEquipmentNumber = Convert.ToString(value); break;

                case "ConnMode": _ConnMode = (ComMode)value; break;

                case "TelephoneNumber": _TelephoneNumber = Convert.ToString(value); break;

                case "CostPackage": _CostPackage = Convert.ToString(value); break;

                case "RenewalCycle": _RenewalCycle = Convert.ToString(value); break;

                case "ThisRenewalTime": _ThisRenewalTime = Convert.ToDateTime(value); break;

                default: base[name] = value; break;
                }
            }
        }
Example #6
0
 // Start is called before the first frame update
 private async UniTask Start()
 {
     ES      = GetComponent <EnemyStatus>();
     commode = ComMode.Attack;
     for (int i = 0; i < FLAGS.Length; i++)
     {
         FLAGS[i] = true;
     }
     Rb   = GetComponent <Rigidbody>();
     Anim = GetComponent <Animator>();
     GCC  = GameObject.Find("System").GetComponent <GameConfigClass>();
     if (type == UType.Hummer)
     {
         await HummerStart();
     }
 }
Example #7
0
    private async UniTask MassiveAttack()
    {
        AnimatorStateInfo ASI = Anim.GetCurrentAnimatorStateInfo(0);

        if (FLAGS[1])
        {
            ES.WATK = true;
            if (PT != null)
            {
                transform.LookAt(new Vector3(PT.position.x, Rb.position.y, PT.position.z));
            }
            if (!Anim.applyRootMotion)
            {
                Anim.applyRootMotion = true;
            }
            Anim.Play("Atck01");
            FLAGS[1] = false;
        }
        else if (FLAGS[2] && !FLAGS[1] && ASI.normalizedTime > 1)
        {
            if (Anim.applyRootMotion)
            {
                Anim.applyRootMotion = false;
            }
            Anim.Play("Atck02");
            Rb.velocity = transform.forward * 5.6f;
            FLAGS[2]    = false;
        }
        else if (FLAGS[3] && !FLAGS[2] && ASI.normalizedTime > 1)
        {
            Anim.Play("Atck03");
            Rb.velocity = transform.forward * 5.6f;
            FLAGS[3]    = false;
        }
        else if (!FLAGS[3] && ASI.normalizedTime > 1)
        {
            commode  = ComMode.Back;
            ES.WATK  = false;
            FLAGS[1] = true;
            FLAGS[2] = true;
            FLAGS[3] = true;
        }
        //Debug.Log(ASI.normalizedTime);
    }
Example #8
0
    private async UniTask Move()
    {
        float dis = Vector3.Distance(PT.position, Rb.position);

        if (dis > 4)
        {
            transform.LookAt(new Vector3(PT.position.x, Rb.position.y, PT.position.z));
            Rb.velocity = transform.forward * MoveSpeed;
            if (FLAGS[1])
            {
                Anim.CrossFade("Run", 0.14f);
                FLAGS[1] = false;
            }
        }
        else
        {
            Anim.Play("Idla");
            commode  = ComMode.Attack;
            FLAGS[1] = true;
        }
    }