EnemyChipMove.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections;
  3. using DG.Tweening;
  4. using UnityEngine;
  5. public class EnemyChipMove : BaseBehaviour
  6. {
  7. private float deltaTime
  8. {
  9. get
  10. {
  11. return Time.time - this.startTime;
  12. }
  13. }
  14. private void OnEnable()
  15. {
  16. this.canPlay = false;
  17. this.startTime = Time.time;
  18. this.destinationPostion = new Vector3(UnityEngine.Random.Range(-3f, 3f), UnityEngine.Random.Range(1f, 4f), -0.02f);
  19. this.currentPostion = base.transform.position;
  20. this._sprite = base.GetComponent<SpriteRenderer>();
  21. base.StartCoroutine(this.PlayEffect());
  22. }
  23. private void Update()
  24. {
  25. if (this.canPlay)
  26. {
  27. base.transform.position = Vector3.MoveTowards(base.transform.position, this.currentPostion + this.destinationPostion, 0.45f * this.speed * this.deltaTime);
  28. if (Vector3.Distance(base.transform.position, this.destinationPostion) < 0.05f)
  29. {
  30. EffectController.TerminateEffect(base.gameObject);
  31. }
  32. }
  33. }
  34. public IEnumerator PlayEffect()
  35. {
  36. yield return new WaitForSeconds(0.1f);
  37. float startTime = Time.time;
  38. if (R.Player != null)
  39. {
  40. PlayerAttribute pattr = R.Player.Attribute;
  41. while (Time.time - startTime < this.waitTime)
  42. {
  43. if (pattr.isInCharging)
  44. {
  45. base.GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 1f, 0f);
  46. Transform transform = R.Effect.Generate(125, base.transform, default(Vector3), default(Vector3), default(Vector3), true);
  47. transform.GetComponent<ChildChipExplosion>().backToPlayer = true;
  48. EffectController.TerminateEffect(base.gameObject);
  49. }
  50. yield return new WaitForSeconds(0.1f);
  51. }
  52. yield return DOTween.To(() => this._sprite.color, delegate(Color x)
  53. {
  54. this._sprite.color = x;
  55. }, new Color(1f, 1f, 1f, 0f), 0.3f).WaitForCompletion();
  56. EffectController.TerminateEffect(base.gameObject);
  57. }
  58. yield break;
  59. }
  60. public bool canPlay;
  61. private float startTime;
  62. [SerializeField]
  63. private float speed = 1f;
  64. private Vector3 destinationPostion;
  65. private Vector3 currentPostion;
  66. public float waitTime = 2f;
  67. private SpriteRenderer _sprite;
  68. }