FalloffGenerator.cs 733 B

12345678910111213141516171819202122232425262728293031
  1. using UnityEngine;
  2. public static class FalloffGenerator
  3. {
  4. public static float[,] GenerateFalloffMap(int size)
  5. {
  6. float[,] map = new float[size,size];
  7. for(int i = 0 ; i < size; i++)
  8. {
  9. for(int j = 0; j < size; j++)
  10. {
  11. float x = i / (float)size * 2 - 1;
  12. float y = j / (float)size * 2 - 1;
  13. float value = Mathf.Max(Mathf.Abs(x), Mathf.Abs(y));
  14. map[i,j] = Evaluate(value);
  15. }
  16. }
  17. return map;
  18. }
  19. static float Evaluate(float value)
  20. {
  21. float a = 3f;
  22. float b = 2.2f;
  23. return Mathf.Pow(value, a) / (Mathf.Pow(value, a) + Mathf.Pow((b - b * value), a));
  24. }
  25. }