Beispiel #1
0
    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();
            }
        }
    }
Beispiel #2
0
    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));
    }