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(); } } }
private async UniTask ChComMove() { Anim.Play("Idle"); commode = ComMode.Move; FLAGS[1] = true; FLAGS[2] = true; FLAGS[3] = true; FLAGS[6] = true; }
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; } }
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; }
/// <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; } } }
// 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(); } }
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); }
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; } }