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
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);
// controller.minSpeed = EditorGUILayout.Slider("Minimum Speed", controller.minSpeed, 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 UnityEditor;
using UnityEngine;
using Random = UnityEngine.Random;
// Boids are represented by a moving, rotating triangle.
// 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 List<Boid> latestNeighborhood;
[NonSerialized] private BoidController _parent;
[NonSerialized] public bool _isFocused = false;
[NonSerialized] public bool _isFocused;
[NonSerialized] private LineRenderer[] _lineRenderers;
private void Start() {
_parent = transform.parent
.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
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;
// Swarm Attributes
[SerializeField] public int boidCount = 50;
[SerializeField] public float boidGroupRange = 1.0f;
[SerializeField] public float boidStartVelocity = 0.005f;
[SerializeField] public int boidCount = 250;
[SerializeField] public float boidGroupRange = 3.3f;
[SerializeField] public float minSpeed;
[SerializeField] public float maxSpeed;
// Boid Rules are multiplied by this to allow rule 'tweaking'
[SerializeField] public float globalBias = 1.0f;
[SerializeField] public float separationBias = 0.05f;
[SerializeField] public float alignmentBias = 0.05f;
[SerializeField] public float cohesionBias = 0.05f;
[SerializeField] public float boundaryBias = 1f;
[SerializeField] public float separationBias = 2f;
[SerializeField] public float alignmentBias = 0.288f;
[SerializeField] public float cohesionBias = 0.3f;
[SerializeField] public float boundaryBias = 1.5f;
// Enable/Disable Boid Rules Altogether
[SerializeField] public bool enableSeparation = true;
@@ -31,12 +30,12 @@ public class BoidController : MonoBehaviour {
[SerializeField] public bool enableBoundary = true;
[SerializeField] public bool enableFovChecks = true;
[SerializeField] public float boidSeparationRange = 2.3f; // Boid Separation rule's activation distance
[SerializeField] public float boundaryForce = 10f; // The force applied when a Boid hits the boundary
[SerializeField] public float boidSeparationRange = 1.4f; // Boid Separation rule's activation distance
[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 edgeWrapping = true; // Enforce Edge Wrapping
[SerializeField] public float maxSteerForce = 10f;
[SerializeField] public float boidFov = 220;
[SerializeField] public float maxSteerForce = 400f;
[SerializeField] public float boidFov = 240;
public Boid focusedBoid; // A focused Boid has special rendering