remove start velocity and using random velocity within given limits, adjust default BoidController values

This commit is contained in:
Xevion
2020-06-06 01:24:53 -05:00
parent b9dbf5a124
commit a6df99bb79
3 changed files with 13 additions and 15 deletions

View File

@@ -20,8 +20,6 @@ public class BoidControllerEditor : UnityEditor.Editor {
} }
// Basic Boid Controller Attributes // Basic Boid Controller Attributes
controller.boidStartVelocity =
EditorGUILayout.Slider("Start Velocity", controller.boidStartVelocity, 0.01f, 25.0f);
EditorGUILayout.MinMaxSlider("Speed Limit", ref controller.minSpeed, ref controller.maxSpeed, 0.01f, 25f); EditorGUILayout.MinMaxSlider("Speed Limit", ref controller.minSpeed, ref controller.maxSpeed, 0.01f, 25f);
// controller.minSpeed = EditorGUILayout.Slider("Minimum Speed", controller.minSpeed, 0.01f, 25.0f); // controller.minSpeed = EditorGUILayout.Slider("Minimum Speed", controller.minSpeed, 0.01f, 25.0f);
// controller.maxSpeed = EditorGUILayout.Slider("Maximum Speed", controller.maxSpeed, 0.01f, 25.0f); // controller.maxSpeed = EditorGUILayout.Slider("Maximum Speed", controller.maxSpeed, 0.01f, 25.0f);

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
using Random = UnityEngine.Random;
// Boids are represented by a moving, rotating triangle. // Boids are represented by a moving, rotating triangle.
// Boids should communicate with sibling Boids via the parental BoidController object // Boids should communicate with sibling Boids via the parental BoidController object
@@ -14,14 +15,14 @@ public class Boid : MonoBehaviour {
[NonSerialized] public int latestNeighborhoodCount = 0; [NonSerialized] public int latestNeighborhoodCount = 0;
[NonSerialized] public List<Boid> latestNeighborhood; [NonSerialized] public List<Boid> latestNeighborhood;
[NonSerialized] private BoidController _parent; [NonSerialized] private BoidController _parent;
[NonSerialized] public bool _isFocused = false; [NonSerialized] public bool _isFocused;
[NonSerialized] private LineRenderer[] _lineRenderers; [NonSerialized] private LineRenderer[] _lineRenderers;
private void Start() { private void Start() {
_parent = transform.parent _parent = transform.parent
.GetComponent<BoidController>(); // Parent used to perform physics math without caching .GetComponent<BoidController>(); // Parent used to perform physics math without caching
_velocity = Util.GetRandomVelocity(_parent.boidStartVelocity); // Acquire a Velocity Vector with a magnitude _velocity = Util.GetRandomVelocity(Random.Range(_parent.minSpeed, _parent.maxSpeed)); // Acquire a Velocity Vector with a magnitude
_position = transform.position; // Track 2D position separately _position = transform.position; // Track 2D position separately
transform.name = $"Boid {transform.GetSiblingIndex()}"; // Name the Game Object so Boids can be tracked somewhat transform.name = $"Boid {transform.GetSiblingIndex()}"; // Name the Game Object so Boids can be tracked somewhat
} }

View File

@@ -11,18 +11,17 @@ public class BoidController : MonoBehaviour {
[NonSerialized] public Rect Boundary; [NonSerialized] public Rect Boundary;
// Swarm Attributes // Swarm Attributes
[SerializeField] public int boidCount = 50; [SerializeField] public int boidCount = 250;
[SerializeField] public float boidGroupRange = 1.0f; [SerializeField] public float boidGroupRange = 3.3f;
[SerializeField] public float boidStartVelocity = 0.005f;
[SerializeField] public float minSpeed; [SerializeField] public float minSpeed;
[SerializeField] public float maxSpeed; [SerializeField] public float maxSpeed;
// Boid Rules are multiplied by this to allow rule 'tweaking' // Boid Rules are multiplied by this to allow rule 'tweaking'
[SerializeField] public float globalBias = 1.0f; [SerializeField] public float globalBias = 1.0f;
[SerializeField] public float separationBias = 0.05f; [SerializeField] public float separationBias = 2f;
[SerializeField] public float alignmentBias = 0.05f; [SerializeField] public float alignmentBias = 0.288f;
[SerializeField] public float cohesionBias = 0.05f; [SerializeField] public float cohesionBias = 0.3f;
[SerializeField] public float boundaryBias = 1f; [SerializeField] public float boundaryBias = 1.5f;
// Enable/Disable Boid Rules Altogether // Enable/Disable Boid Rules Altogether
[SerializeField] public bool enableSeparation = true; [SerializeField] public bool enableSeparation = true;
@@ -31,12 +30,12 @@ public class BoidController : MonoBehaviour {
[SerializeField] public bool enableBoundary = true; [SerializeField] public bool enableBoundary = true;
[SerializeField] public bool enableFovChecks = true; [SerializeField] public bool enableFovChecks = true;
[SerializeField] public float boidSeparationRange = 2.3f; // Boid Separation rule's activation distance [SerializeField] public float boidSeparationRange = 1.4f; // Boid Separation rule's activation distance
[SerializeField] public float boundaryForce = 10f; // The force applied when a Boid hits the boundary [SerializeField] public float boundaryForce = 50f; // The force applied when a Boid hits the boundary
[SerializeField] public bool localFlocks = true; // Calculate Local 'Neighborhood' for flocks? [SerializeField] public bool localFlocks = true; // Calculate Local 'Neighborhood' for flocks?
[SerializeField] public bool edgeWrapping = true; // Enforce Edge Wrapping [SerializeField] public bool edgeWrapping = true; // Enforce Edge Wrapping
[SerializeField] public float maxSteerForce = 10f; [SerializeField] public float maxSteerForce = 400f;
[SerializeField] public float boidFov = 220; [SerializeField] public float boidFov = 240;
public Boid focusedBoid; // A focused Boid has special rendering public Boid focusedBoid; // A focused Boid has special rendering