Exemple #1
0
        public static Collider[] GetEntitiesInSight(int mask, Transform transform, float radius, float degrees, float heightOffset, float maxHeightDifference, bool useHeightDifference = true)
        {
            Collider[]      colliders   = Environment.GetObjectsInRadius(transform.position, radius, mask);
            List <Collider> results     = new List <Collider>();
            float           halfDegrees = degrees / 2.0f;

            for (int loop1 = 0; loop1 < colliders.Length; loop1++)
            {
                GameObject candidate = GameObjectUtilities.GetGameObject(colliders[loop1]);
                if (halfDegrees <= Direction.GetAngle(transform, candidate.transform))
                {
                    continue;
                }
                Vector3 eyePos   = candidate.transform.position + Vector3.up * heightOffset;
                Vector3 toPlayer = transform.position - eyePos;

                // If the enemy is too high or too low ignore him.
                if (useHeightDifference && Mathf.Abs(toPlayer.y + heightOffset) > maxHeightDifference)
                {
                    continue;
                }
                EntityController entity = candidate.GetComponent <EntityController>();
                if (null == entity || entity.Dead)
                {
                    continue;
                }
                results.Add(colliders[loop1]);
            }
            return(results.ToArray());
        }
Exemple #2
0
        protected virtual void OnTriggerEnter(Collider other)
        {
            GameObject       go     = GameObjectUtilities.GetGameObject(other);
            PlayerController player = go.GetComponent <PlayerController>();

            if (null == player)
            {
                return;
            }
            PlayerVisited = true;
        }
Exemple #3
0
        protected virtual void OnTriggerEnter(Collider other)
        {
            GameObject go = GameObjectUtilities.GetGameObject(other);

            if (go.CompareTag("Pickup"))
            {
                AbstractPickup pickup = go.GetComponent <AbstractPickup>();
                if (null == pickup)
                {
                    return;
                }
                pickup.ExecutePickup(this);
                Destroy(go);
            }
        }
Exemple #4
0
        public static Collider[] GetClimbables(Transform transform)
        {
            Collider[]      colliders = Environment.GetObjectsInRadius(transform.position, 1.0f, "Climbable", LayerMaskValues.LEVEL);
            List <Collider> results   = new List <Collider>();

            for (int loop = 0; loop < colliders.Length; loop++)
            {
                GameObject candidate = GameObjectUtilities.GetGameObject(colliders[loop]);
                if ((0 < Direction.GetForwardOrBehind(transform, candidate.transform)) &&
                    (Direction.AreParallel(transform.forward, candidate.transform.forward, 5.0f)))
                {
                    results.Add(colliders[loop]);
                }
            }
            return(results.ToArray());
        }
Exemple #5
0
        public static Collider[] GetEntitiesInFront(int mask, Transform transform, float radius, float degrees, float heightOffset, float maxHeightDifference, bool useHeightDifference = true)
        {
            Collider[]      colliders = Environment.GetEntitiesInSight(mask, transform, radius, degrees, heightOffset, maxHeightDifference, useHeightDifference);
            List <Collider> results   = new List <Collider>();

            for (int loop = 0; loop < colliders.Length; loop++)
            {
                GameObject       candidate = GameObjectUtilities.GetGameObject(colliders[loop]);
                EntityController entity    = candidate.GetComponent <EntityController>();
                if (null == entity || entity.Dead)
                {
                    continue;
                }
                if (0 < Direction.GetForwardOrBehind(transform, candidate.transform))
                {
                    results.Add(colliders[loop]);
                }
            }
            return(results.ToArray());
        }