DotEffect.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class DotEffect : MonoBehaviour
  5. {
  6. public GameObject subject; //camera or other object we want to attach the effect to
  7. public GameObject dot;
  8. [Range(0,20)]
  9. public float spacing = 20;
  10. [Range(0,10)]
  11. public float dotSize;
  12. public int matrixSize = 12;
  13. List<GameObject> dots;
  14. Vector3 cachedPosition;
  15. // Start is called before the first frame update
  16. void Start()
  17. {
  18. dots = new List<GameObject>();
  19. transform.position = subject.transform.position;
  20. cachedPosition = transform.position;
  21. for(int x = -matrixSize/2; x < matrixSize/2; x++){
  22. for(int y = -matrixSize/2; y < matrixSize/2; y++){
  23. for(int z = -matrixSize/2; z < matrixSize/2; z++){
  24. GameObject newDot = Instantiate(dot, transform);
  25. newDot.transform.localScale = new Vector3(dotSize,dotSize,dotSize);
  26. dots.Add(newDot);
  27. newDot.transform.position = new Vector3(x*spacing,y*spacing,z*spacing) + transform.position;
  28. }
  29. }
  30. }
  31. }
  32. // Update is called once per frame
  33. void Update()
  34. {
  35. Vector3 velocity = subject.transform.position - cachedPosition;
  36. cachedPosition = subject.transform.position;
  37. transform.position += velocity * 2;
  38. if(Mathf.Abs(transform.position.x - subject.transform.position.x) > spacing){
  39. transform.position = new Vector3(subject.transform.position.x,transform.position.y, transform.position.z);
  40. }
  41. if(Mathf.Abs(transform.position.y - subject.transform.position.y) > spacing){
  42. transform.position = new Vector3(transform.position.x,subject.transform.position.y, transform.position.z);
  43. }
  44. if(Mathf.Abs(transform.position.z - subject.transform.position.z) > spacing){
  45. transform.position = new Vector3(transform.position.x,transform.position.y, subject.transform.position.z);
  46. }
  47. }
  48. }