private void Update() { //starting to think this would be better with a mesh/cone collider BUT OH WELL if (targetEnemy == null) { hasEnemyTargeted = false; } if (isFiring && tracksEnemies && !hasEnemyTargeted) { //Finding the closest enemy to the left side of the field of view. float highestAllowableAngleFound = -360f; foreach (GameObject enemy in gameController.enemies) { if (enemy != null) { //Returns positive if enemy is in the left side of line of sight. float angleBetween = MathHelper.AngleBetween(hardPoint, enemy); if (Mathf.Abs(angleBetween) < (fieldOfView / 2) && angleBetween > highestAllowableAngleFound) { Debug.Log("Found new enemy at " + angleBetween + " degrees"); targetEnemy = enemy; highestAllowableAngleFound = angleBetween; hasEnemyTargeted = true; } } } if (hasEnemyTargeted == false) { ResetPosition(); } } if (isFiring && tracksEnemies && hasEnemyTargeted) { if (Mathf.Abs(MathHelper.AngleBetween(hardPoint, targetEnemy)) < (fieldOfView / 2)) { Debug.Log("enemy is still in field of view"); //Direction to look. LookAtEnemy(); //transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, speed * Time.time); //transform.LookAt(targetEnemy.transform, Vector3.back); } else { targetEnemy = null; hasEnemyTargeted = false; ResetPosition(); } } }
void triangle() { Handles.DrawLine(a + offset, b + offset); Handles.DrawLine(b + offset, c + offset); Handles.DrawLine(a + offset, c + offset); Gizmos.color = Color.red; Gizmos.DrawSphere(a + offset, size); Gizmos.color = Color.blue; Gizmos.DrawSphere(b + offset, size); Gizmos.color = Color.green; Gizmos.DrawSphere(c + offset, size); Debug.Log("ab : " + MathHelper.AngleBetween(a, b)); Debug.Log("bc : " + MathHelper.AngleBetween(b, c)); Debug.Log("ac : " + MathHelper.AngleBetween(a, c)); }