diff --git a/Boids/Assets/Boid.cs b/Boids/Assets/Boid.cs index 22841a9..d27bf58 100644 --- a/Boids/Assets/Boid.cs +++ b/Boids/Assets/Boid.cs @@ -27,10 +27,10 @@ public class Boid : MonoBehaviour { transform.name = $"Boid {transform.GetSiblingIndex()}"; // Name the Game Object so Boids can be tracked somewhat } - void OnDrawGizmos() { - var transform_ = transform; - Handles.Label(transform_.position, $"{transform_.name} {_latestNeighborhoodCount}"); - } + // void OnDrawGizmos() { + // var transform_ = transform; + // Handles.Label(transform_.position, $"{transform_.name} {_latestNeighborhoodCount}"); + // } void Update() { // Updates the rotation of the object based on the Velocity @@ -151,16 +151,16 @@ public class Boid : MonoBehaviour { // Boundary X Force if (_position.x < _parent.Boundary.xMin) - vector.x = _parent.boundaryForce; + vector.x = _parent.boundaryForce * Mathf.InverseLerp(_parent.Boundary.xMin, _parent.Space.xMin, _position.x); else if (_position.x > _parent.Boundary.xMax) - vector.x = -_parent.boundaryForce; + vector.x = -_parent.boundaryForce * Mathf.InverseLerp(_parent.Boundary.xMax, _parent.Space.xMax, _position.x); // Boundary Y Force if (_position.y < _parent.Boundary.yMin) - vector.y = _parent.boundaryForce; + vector.y = _parent.boundaryForce * Mathf.InverseLerp(_parent.Boundary.yMin, _parent.Space.yMin, _position.y); else if (_position.y > _parent.Boundary.yMax) - vector.y = -_parent.boundaryForce; - + vector.y = -_parent.boundaryForce * Mathf.InverseLerp(_parent.Boundary.yMax, _parent.Space.yMax, _position.y); + print($"Boundary Vector: {vector}"); return vector; } diff --git a/Boids/Assets/BoidController.cs b/Boids/Assets/BoidController.cs index 80c0047..b1eb923 100644 --- a/Boids/Assets/BoidController.cs +++ b/Boids/Assets/BoidController.cs @@ -51,6 +51,21 @@ public class BoidController : MonoBehaviour { Gizmos.DrawWireCube(Cam.transform.position, new Vector3(screenWidth, screenHeight, 1)); } + void Update() { + // Focus a different Boid + if (Input.GetKeyDown("space")) { + // Undo previous Boid's focus + if (focusedBoid != null) { + var oldTriangle = focusedBoid.transform.GetComponent(); + oldTriangle.meshRenderer.material.color = new Color32(49, 61, 178, 255); + } + + focusedBoid = boids[Random.Range(0, boids.Count)]; + var triangle = focusedBoid.transform.GetComponent(); + triangle.meshRenderer.material.color = Color.red; + } + } + private void Start() { // Setup Camera Cam = Camera.main; @@ -61,7 +76,7 @@ public class BoidController : MonoBehaviour { Space = new Rect((Vector2) transform.position - size / 2, size); Boundary = new Rect(Vector2.zero, Space.size * 0.95f); Boundary.center = Space.center; - + AddBoids(boidCount); } diff --git a/Boids/Assets/Triangle.cs b/Boids/Assets/Triangle.cs index 1d36e5c..09cb353 100644 --- a/Boids/Assets/Triangle.cs +++ b/Boids/Assets/Triangle.cs @@ -1,12 +1,11 @@ using System; -using System.Collections; -using System.Collections.Generic; using System.Linq; using UnityEngine; public class Triangle : MonoBehaviour { [NonSerialized] public Color FillColor = Color.red; - + public MeshRenderer meshRenderer; + private void Start () { // Create Vector2 vertices var vertices2D = new Vector2[] { @@ -35,7 +34,7 @@ public class Triangle : MonoBehaviour { mesh.RecalculateBounds(); // Set up game object with mesh; - var meshRenderer = gameObject.AddComponent(); + meshRenderer = gameObject.AddComponent(); meshRenderer.material = (Material) Resources.Load("BoidMaterial"); var filter = gameObject.AddComponent();