EnergyBallGenerator.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using UnityEngine;
  3. public class EnergyBallGenerator : BaseBehaviour
  4. {
  5. public static EnergyBallGenerator Instance
  6. {
  7. get
  8. {
  9. if (EnergyBallGenerator.myInstance == null)
  10. {
  11. EnergyBallGenerator.myInstance = (UnityEngine.Object.FindObjectOfType(typeof(EnergyBallGenerator)) as EnergyBallGenerator);
  12. }
  13. return EnergyBallGenerator.myInstance;
  14. }
  15. }
  16. private void Start()
  17. {
  18. }
  19. private void Update()
  20. {
  21. }
  22. public void Generate(Vector3 generatePos, int number, int typeId)
  23. {
  24. for (int i = 0; i < number; i++)
  25. {
  26. Transform transform = UnityEngine.Object.Instantiate<Transform>(this.energyBallArray[typeId]);
  27. transform.position = new Vector3(generatePos.x, generatePos.y, -0.01f);
  28. }
  29. }
  30. public void GenerateCircle(Vector3 generatePos, int number, int typeId)
  31. {
  32. generatePos = new Vector3(generatePos.x, generatePos.y, -0.01f);
  33. for (int i = 0; i < number; i++)
  34. {
  35. Transform transform = UnityEngine.Object.Instantiate<Transform>(this.energyBallArray[typeId]);
  36. transform.position = new Vector3(generatePos.x, generatePos.y, -0.01f);
  37. Vector3 target = new Vector3(generatePos.x + Mathf.Sin(6.28318548f / (float)number * (float)i), generatePos.y + Mathf.Cos(6.28318548f / (float)number * (float)i), -0.01f);
  38. transform.position = Vector3.MoveTowards(generatePos, target, 40f * Time.deltaTime);
  39. }
  40. }
  41. [SerializeField]
  42. private Transform[] energyBallArray;
  43. public static EnergyBallGenerator myInstance;
  44. }