/// <summary> /// Cast a Ray to find a Entity Based on allegiance /// </summary> /// <param name="entity">Current Entity</param> /// <param name="allegiance">Allegiance</param> /// <param name="mask">Layer Mask</param> /// <param name="entityHit">Hit Entity</param> /// <returns></returns> public static bool RaycastHitEntity(MobaEntity entity, EAllegiance allegiance, LayerMask mask, Vector2 screenPosition, out MobaEntity entityHit) { entityHit = null; RaycastHit[] raycastArray = Physics.RaycastAll(CameraController.instance.sources.currentCamera.ScreenPointToRay(screenPosition), Mathf.Infinity, mask); foreach (RaycastHit ray in raycastArray) { entityHit = ray.transform.GetComponent <MobaEntity>(); if (entityHit) { //If the player clicks on any entity with the current allegiance, return true if (entity.GetTargetAllegiance(entityHit) == allegiance) { Debug.Log("Entity Clicked: " + entityHit.name); return(true); } } } return(false); }